Browse Source

fix

master
lin 1 year ago
parent
commit
ea1533ae67
17 changed files with 246 additions and 94 deletions
  1. +27
    -4
      gptCApi/src/main/java/com/iformall/controller/WxPayController.java
  2. +6
    -58
      gptCApi/src/main/java/com/iformall/controller/WxProductController.java
  3. +19
    -1
      gptCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  4. +2
    -2
      gptCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java
  5. +4
    -0
      gptService/src/main/java/com/iformall/domain/po/WxProduct.java
  6. +3
    -0
      gptService/src/main/java/com/iformall/service/WxCUserService.java
  7. +9
    -0
      gptService/src/main/java/com/iformall/service/WxProductService.java
  8. +2
    -2
      gptService/src/main/java/com/iformall/service/cache/WxCUserCache.java
  9. +75
    -0
      gptService/src/main/java/com/iformall/service/cache/WxProductCache.java
  10. +12
    -0
      gptService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java
  11. +53
    -0
      gptService/src/main/java/com/iformall/service/impl/WxProductServiceImpl.java
  12. +1
    -1
      gptService/src/main/java/com/iformall/service/wx/WxPayService.java
  13. +21
    -8
      gptService/src/main/java/com/iformall/service/wx/WxPayServiceImpl.java
  14. +1
    -12
      gptService/src/main/java/com/iformall/service/wx/WxWeappService.java
  15. +3
    -0
      gptService/src/main/java/com/iformall/utils/Constant.java
  16. +0
    -4
      gptService/src/main/java/com/iformall/utils/SysConfigConstant.java
  17. +8
    -2
      gptService/src/main/resources/mapper/WxProductMapper.xml

+ 27
- 4
gptCApi/src/main/java/com/iformall/controller/WxPayController.java View File

@@ -1,6 +1,7 @@
package com.iformall.controller;

import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
@@ -52,6 +53,9 @@ public class WxPayController extends BaseController {
@Autowired
SysConfigService sysConfigService;
@Autowired
WxProductService wxProductService;
@Autowired
@Qualifier("objectCommonRedisTemplate")
RedisTemplate<String, Object> redisTemplate;
@@ -67,7 +71,7 @@ public class WxPayController extends BaseController {
public ResultData createPayOrder(@RequestBody Map<String, String> paramMap) {
WxCUser wxCUser = this.getCUser();
String appId = paramMap.get("appId");
//String carNumber = paramMap.get("carNumber");
String productId = paramMap.get("productId");
try {
WxAppinfo cAppInfo = wxAppinfoService.getCAppInfoFromRedis(appId);
if(cAppInfo == null){
@@ -78,21 +82,40 @@ public class WxPayController extends BaseController {
throw new MallinkException(ErrorCode.APPINFO_NOFUND.getCode(),"未查询到payAccount.");
}
//判断是否传入的首充产品
WxProduct product = wxProductService.getCFirstProduct(wxCUser);
long pid = Long.parseLong(productId);
if (null != product && product.getId().longValue() == pid) {
WxPayOrder payOrder = new WxPayOrder();
payOrder.updateTenantInfo(wxCUser);
payOrder.setcUserId(wxCUser.getId());
PageInfo<WxPayOrder> page = wxPayService.listPayOrderAsPage(payOrder, 1, 1);
if (null != page && null != page.getList() && page.getList().size() > 0 ) {
throw new MallinkException(ErrorCode.APPINFO_NOFUND.getCode(),"当前账号不满足首充条件.");
}
}else {
product = wxProductService.getCProduct(wxCUser, pid);
}
if (null == product) {
throw new MallinkException(ErrorCode.APPINFO_NOFUND.getCode(),"未查询到product.");
}
String receiverAccount = payAccount.getSubMchId();
String apiKey = payAccount.getMerchantApiKey();
int rlength = receiverAccount.length();
//最大128 cuserId,cuserPhone,carNumber,amountType,merchantAccount,parkOrderNo
StringBuffer attachSb = new StringBuffer()
.append(wxCUser.getId()).append(",")
.append(wxCUser.getPhone());
.append(wxCUser.getPhone()).append(",")
.append(pid);
//创建微信支付订单
final IdWorker idWorker = IdWorker.get();
String uniquePayOrderNo = String.valueOf(idWorker.nextId());
String attach = attachSb.toString();
String productPre = uniquePayOrderNo;//中文签名错误
//String productPre = "ParkOrderId";
SysConfig sysConfig = sysConfigService.getByKey(SysConfigConstant.sale_price, payAccount);
PayAdapterResult wxResult = wxPayService.createWxPayOrder(payAccount,cAppInfo,false,false,wxCUser.getOpenId(), receiverAccount, productPre, attach, uniquePayOrderNo, Integer.parseInt(sysConfig.getConfigItemValue()),
PayAdapterResult wxResult = wxPayService.createWxPayOrder(payAccount,cAppInfo,false,false,wxCUser.getOpenId(), receiverAccount, productPre, attach, uniquePayOrderNo, product.getSalePrice(),
"127.0.0.1", payAccount.getPayNotifyUrl(), apiKey, new Date());
if (wxResult.isSuccess()) {
return new ResultData(wxResult);


+ 6
- 58
gptCApi/src/main/java/com/iformall/controller/WxProductController.java View File

@@ -1,39 +1,13 @@
package com.iformall.controller;

import com.alibaba.fastjson.JSON;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.entity.PayAdapterResult;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.base.BaseEntity.SortField;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.*;
import com.iformall.service.wx.WxPayService;
import com.iformall.utils.Constant;
import com.iformall.utils.SysConfigConstant;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api/product")
public class WxProductController extends BaseController {
@@ -45,41 +19,15 @@ public class WxProductController extends BaseController {
@Autowired
WxProductService wxProductService;
@GetMapping("/detail")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
})
public ResultData payOrderDetail(Long id) {
Map retMap = new HashMap();
TenantEntity tenantEntity = getCUser();
SysConfig salePrice = sysConfigService.getByKey(SysConfigConstant.sale_price, tenantEntity);
SysConfig price = sysConfigService.getByKey(SysConfigConstant.price, tenantEntity);
SysConfig days = sysConfigService.getByKey(SysConfigConstant.expired_days, tenantEntity);
SysConfig img = sysConfigService.getByKey(SysConfigConstant.productImg, tenantEntity);
retMap.put("price", price.getConfigItemValue());
retMap.put("salePrice", salePrice.getConfigItemValue());
retMap.put("days", days.getConfigItemValue());
retMap.put("productImg", img.getConfigItemValue());
return new ResultData(retMap);
@GetMapping("/first")
@ApiOperation(value = "首充", notes = "")
public ResultData first() {
return new ResultData(wxProductService.getCFirstProduct(getCUser()));
}
@GetMapping("/list")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true),
})
public ResultData payOrderDetail() {
Map retMap = new HashMap();
TenantEntity tenantEntity = getCUser();
SysConfig salePrice = sysConfigService.getByKey(SysConfigConstant.sale_price, tenantEntity);
SysConfig price = sysConfigService.getByKey(SysConfigConstant.price, tenantEntity);
SysConfig days = sysConfigService.getByKey(SysConfigConstant.expired_days, tenantEntity);
SysConfig img = sysConfigService.getByKey(SysConfigConstant.productImg, tenantEntity);
retMap.put("price", price.getConfigItemValue());
retMap.put("salePrice", salePrice.getConfigItemValue());
retMap.put("days", days.getConfigItemValue());
retMap.put("productImg", img.getConfigItemValue());
return new ResultData(retMap);
public ResultData list() {
return new ResultData(wxProductService.getCProductList(getCUser()));
}

}

+ 19
- 1
gptCApi/src/main/java/com/iformall/controller/WxUserGrantController.java View File

@@ -18,6 +18,7 @@ import com.iformall.service.cache.WxAppInfoCache;
import com.iformall.service.cache.WxCUserCache;
import com.iformall.service.wx.WxWeappService;
import com.iformall.utils.Constant;
import com.iformall.utils.DateUtils;
import com.iformall.utils.IPUtil;
import com.iformall.utils.MaUtil;
import com.iformall.utils.RedisCacheUtils;
@@ -154,7 +155,7 @@ public class WxUserGrantController extends BaseController {
cUser.updateTenantInfo(wxAppinfo);
wxCUserService.saveOrUpdate(cUser);
}
WxCUserCache.cacheApp(objectCommonRedisTemplate, cUser);
WxCUserCache.cacheWxCUser(objectCommonRedisTemplate, cUser);
resultMap.put("token", String.valueOf(cUser.getId()));
return new ResultData(resultMap);
}
@@ -233,5 +234,22 @@ public class WxUserGrantController extends BaseController {
}
return new ResultData(user);
}
@ApiOperation("申请")
@GetMapping("/apply")
public ResultData apply() {
WxCUser user = getCUser();
if (null == user.getValidStartTime() && null == user.getValidEndTime()) {
SysConfig config = sysConfigService.getByKey(SysConfigConstant.freeDays, user);
int freeDays = Integer.parseInt(config.getConfigItemValue());
if (freeDays > 0 ) {
Date curr = new Date();
user.setValidStartTime(curr);
user.setValidEndTime(DateUtils.getTimeAfterDays(freeDays, curr));
wxCUserService.apply(user);
}
}
return new ResultData();
}

}

+ 2
- 2
gptCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java View File

@@ -74,14 +74,14 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
throw new MallinkException(ErrorCode.UNLOGIN);
}

WxCUser wxCUser = WxCUserCache.getCacheAppInfo(redisTemplate, Long.parseLong(token));
WxCUser wxCUser = WxCUserCache.getCacheWxCUser(redisTemplate, Long.parseLong(token));
if (null == wxCUser) {
wxCUser = wxCUserService.getById(Long.parseLong(token), tenantId);
if (null == wxCUser) {
throw new MallinkException(ErrorCode.UNLOGIN);
}
WxCUserCache.cacheApp(redisTemplate, wxCUser);
WxCUserCache.cacheWxCUser(redisTemplate, wxCUser);
}

request.setAttribute(Constant.TENANT_ID, wxCUser.getTenantId());


+ 4
- 0
gptService/src/main/java/com/iformall/domain/po/WxProduct.java View File

@@ -22,6 +22,8 @@ public class WxProduct extends TenantEntity {
private Date updateTime;
@io.swagger.annotations.ApiModelProperty(value="产品名称",name="name")
private String name;
@io.swagger.annotations.ApiModelProperty(value="产品图片",name="img")
private String img;
@io.swagger.annotations.ApiModelProperty(value="原价",name="price")
private Integer price;
@io.swagger.annotations.ApiModelProperty(value="售价",name="salePrice")
@@ -30,4 +32,6 @@ public class WxProduct extends TenantEntity {
private Integer days;
@io.swagger.annotations.ApiModelProperty(value="返佣",name="rebate")
private Integer rebate;
@io.swagger.annotations.ApiModelProperty(value="是否首充EnumYesOrNo",name="first")
private Integer first;
}

+ 3
- 0
gptService/src/main/java/com/iformall/service/WxCUserService.java View File

@@ -40,5 +40,8 @@ public interface WxCUserService {
* @param record
*/
int saveOrUpdate(WxCUser record);
void apply(WxCUser record);

}

+ 9
- 0
gptService/src/main/java/com/iformall/service/WxProductService.java View File

@@ -1,6 +1,8 @@
package com.iformall.service;

import com.iformall.domain.po.WxProduct;
import com.iformall.domain.po.base.TenantEntity;

import java.util.List;

public interface WxProductService {
@@ -15,4 +17,11 @@ public interface WxProductService {
WxProduct getById(Long id,String tenantId);
List<WxProduct> productList(WxProduct product);
List<WxProduct> getCProductList(TenantEntity tenantEntity);
WxProduct getCFirstProduct(TenantEntity tenantEntity);
WxProduct getCProduct(TenantEntity tenantEntity,Long id);
}

+ 2
- 2
gptService/src/main/java/com/iformall/service/cache/WxCUserCache.java View File

@@ -13,12 +13,12 @@ public class WxCUserCache {
return key;
}
public static WxCUser getCacheAppInfo(RedisTemplate<String, Object> wxAppinfoRedisTemplate,Long userId) {
public static WxCUser getCacheWxCUser(RedisTemplate<String, Object> wxAppinfoRedisTemplate,Long userId) {
String key = getKey(userId);
return RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxCUser.class);
}
public static void cacheApp(RedisTemplate<String, Object> wxAppinfoRedisTemplate,WxCUser wxCUser) {
public static void cacheWxCUser(RedisTemplate<String, Object> wxAppinfoRedisTemplate,WxCUser wxCUser) {
String key = getKey(wxCUser.getId());
RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, wxCUser, 3600*24*7);
}


+ 75
- 0
gptService/src/main/java/com/iformall/service/cache/WxProductCache.java View File

@@ -0,0 +1,75 @@
package com.iformall.service.cache;

import java.util.List;

import org.springframework.data.redis.core.RedisTemplate;

import com.iformall.domain.po.WxProduct;
import com.iformall.utils.Constant;
import com.iformall.utils.RedisCacheUtils;

public class WxProductCache {

private static String getKey(Long productId) {
String key = Constant.productPre + productId;
return key;
}
public static WxProduct getCache(RedisTemplate<String, Object> redisTemplate,Long productId) {
String key = getKey(productId);
return RedisCacheUtils.getCacheObject(redisTemplate, key, WxProduct.class);
}
public static void cache(RedisTemplate<String, Object> redisTemplate,WxProduct wxProduct) {
String key = getKey(wxProduct.getId());
RedisCacheUtils.cache(redisTemplate, key, wxProduct, 3600*24*7);
}
public static void removeCache(RedisTemplate<String, Object> redisTemplate,Long productId) {
String key = getKey(productId);
RedisCacheUtils.removeCache(redisTemplate, key);
}
private static String getFirstKey() {
String key = Constant.productFirstPre;
return key;
}
public static WxProduct getCacheFirst(RedisTemplate<String, Object> redisTemplate) {
String key = getFirstKey();
return RedisCacheUtils.getCacheObject(redisTemplate, key, WxProduct.class);
}
public static void cacheFirst(RedisTemplate<String, Object> redisTemplate,WxProduct wxProduct) {
String key = getFirstKey();
RedisCacheUtils.cache(redisTemplate, key, wxProduct, 3600*24*7);
}
public static void removeCacheFirst(RedisTemplate<String, Object> redisTemplate) {
String key = getFirstKey();
RedisCacheUtils.removeCache(redisTemplate, key);
}
private static String getListKey() {
String key = Constant.productListPre;
return key;
}
public static List<WxProduct> getCacheList(RedisTemplate<String, Object> redisTemplate) {
String key = getListKey();
return RedisCacheUtils.getCacheListObject(redisTemplate, key, WxProduct.class);
}
public static void cacheList(RedisTemplate<String, Object> redisTemplate,List<WxProduct> wxProductList) {
String key = getListKey();
RedisCacheUtils.cache(redisTemplate, key, wxProductList, 3600*24*7);
}
public static void removeCacheList(RedisTemplate<String, Object> redisTemplate) {
String key = getListKey();
RedisCacheUtils.removeCache(redisTemplate, key);
}
}

+ 12
- 0
gptService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java View File

@@ -10,6 +10,7 @@ import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxCUserMapper;
import com.iformall.service.*;
import com.iformall.service.cache.WxCUserCache;
import com.iformall.utils.Constant;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.apache.commons.lang3.StringUtils;
@@ -29,6 +30,10 @@ public class WxCUserServiceImpl implements WxCUserService {

@Autowired
WxCUserMapper wxCUserMapper;
@Autowired
@Qualifier("objectCommonRedisTemplate")
RedisTemplate<String, Object> redisTemplate;

@Override
public WxCUser getById(Long id,String tenantId) {
@@ -63,4 +68,11 @@ public class WxCUserServiceImpl implements WxCUserService {
return ret;
}

@Override
public void apply(WxCUser record) {
wxCUserMapper.updateValidTime(record.getId(), record.getTenantId(), record.getValidStartTime(), record.getValidEndTime());
WxCUser user = wxCUserMapper.selectById(record.getId(), record.getTenantId());
WxCUserCache.cacheWxCUser(redisTemplate, user);
}

}

+ 53
- 0
gptService/src/main/java/com/iformall/service/impl/WxProductServiceImpl.java View File

@@ -1,11 +1,16 @@
package com.iformall.service.impl;

import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.mapper.WxProductMapper;
import com.iformall.service.*;
import com.iformall.service.cache.WxProductCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.List;

@@ -15,6 +20,10 @@ public class WxProductServiceImpl implements WxProductService {

@Autowired
WxProductMapper wxProductMapper;
@Autowired
@Qualifier("objectCommonRedisTemplate")
RedisTemplate<String, Object> objectCommonRedisTemplate;

@Override
public WxProduct getById(Long id, String tenantId) {
@@ -26,6 +35,50 @@ public class WxProductServiceImpl implements WxProductService {
return wxProductMapper.findList(product);
}

@Override
public List<WxProduct> getCProductList(TenantEntity tenantEntity) {
List<WxProduct> productList = WxProductCache.getCacheList(objectCommonRedisTemplate);
if (null == productList || productList.size() <= 0 ) {
WxProduct p = new WxProduct();
p.updateTenantInfo(tenantEntity);
p.setFirst(EnumYesOrNo.NO.getCode());
List<WxProduct> plist = productList(p);
if (null != plist && plist.size() > 0 ) {
WxProductCache.cacheList(objectCommonRedisTemplate, plist);
return plist;
}
}
return productList;
}

@Override
public WxProduct getCFirstProduct(TenantEntity tenantEntity) {
WxProduct _product = WxProductCache.getCacheFirst(objectCommonRedisTemplate);
if (null == _product) {
WxProduct p = new WxProduct();
p.updateTenantInfo(tenantEntity);
p.setFirst(EnumYesOrNo.YES.getCode());
List<WxProduct> productList = productList(p);
if (null != productList && productList.size() > 0 ) {
_product = productList.get(0);
WxProductCache.cacheFirst(objectCommonRedisTemplate, _product);
}
}
return _product;
}

@Override
public WxProduct getCProduct(TenantEntity tenantEntity,Long id) {
WxProduct _product = WxProductCache.getCache(objectCommonRedisTemplate,id);
if (null == _product) {
_product = getById(id, tenantEntity.getTenantId());
if (null != _product) {
WxProductCache.cache(objectCommonRedisTemplate, _product);
}
}
return _product;
}


}

+ 1
- 1
gptService/src/main/java/com/iformall/service/wx/WxPayService.java View File

@@ -18,7 +18,7 @@ public interface WxPayService {
public String handlePaidCallBack(String tenantId,Map<String, String> paramMap);
public void handlePaidSuccess(String tenantId,Long orderId,Long cUserId,Integer fee,Date paidTime,String transcationId,
public void handlePaidSuccess(Long productId,String tenantId,Long orderId,Long cUserId,Integer fee,Date paidTime,String transcationId,
String userPhone) throws Exception;

public WxPayOrder detailPayOrder(Long id,String tenantId);


+ 21
- 8
gptService/src/main/java/com/iformall/service/wx/WxPayServiceImpl.java View File

@@ -10,6 +10,7 @@ import com.iformall.domain.po.SysConfig;
import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.WxPayOrder;
import com.iformall.domain.po.WxProduct;
import com.iformall.domain.po.WxPayAccount;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.exception.MallinkException;
@@ -20,6 +21,7 @@ import com.iformall.mapper.WxPayAccountMapper;
import com.iformall.service.SysConfigService;
import com.iformall.service.WxAppinfoService;
import com.iformall.service.WxPayAccountService;
import com.iformall.service.WxProductService;
import com.iformall.service.cache.WxCUserCache;
import com.iformall.utils.DateUtils;
import com.iformall.utils.RedisLock;
@@ -75,6 +77,10 @@ public class WxPayServiceImpl implements WxPayService {
@Autowired
WxCUserMapper wxCUserMapper;
@Lazy
@Autowired
WxProductService wxProductService;
@Autowired
@Qualifier("objectCommonRedisTemplate")
RedisTemplate<String, Object> wxPayRedisTemplate;
@@ -126,20 +132,22 @@ public class WxPayServiceImpl implements WxPayService {
String attach = paramMap.get("attach");
Long cUserId = null;
String userPhone = null;
Long productId = null;
if (!StringUtils.isBlank(attach)) {
String[] attrs = attach.split(",");
if (attrs.length == 2) {
if (attrs.length == 3) {
cUserId = Long.parseLong(attrs[0]);
userPhone = attrs[1];
productId = Long.parseLong(attrs[2]);
}
}
String payOrderNo = paramMap.get("out_trade_no");
handlePaidSuccess(tenantId,Long.parseLong(payOrderNo),cUserId,Integer.parseInt(cashFeeStr),
handlePaidSuccess(productId,tenantId,Long.parseLong(payOrderNo),cUserId,Integer.parseInt(cashFeeStr),
DateUtils.string2Date(time_end, DateUtils.DATE_PATTERN_ALL_NOSPACE).getTime(),transcationId,
userPhone);
WxCUser cUser = wxCUserMapper.selectById(cUserId, tenantId);
WxCUserCache.cacheApp(wxPayRedisTemplate, cUser);
WxCUserCache.cacheWxCUser(wxPayRedisTemplate, cUser);
} catch (Exception e) {
logger.error("handlePaidCallBackError.",e);
return notifyErrorResult(e.getMessage());
@@ -158,7 +166,7 @@ public class WxPayServiceImpl implements WxPayService {

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public void handlePaidSuccess(String tenantId,Long orderId,Long cUserId,Integer fee,Date paidTime,String transcationId,
public void handlePaidSuccess(Long productId,String tenantId,Long orderId,Long cUserId,Integer fee,Date paidTime,String transcationId,
String userPhone) throws Exception{
//查询该笔订单是否已经存在
WxPayOrder payOrder = wxPayOrderMapper.findOneByIdOrTranscationId(orderId,transcationId, tenantId);
@@ -197,20 +205,25 @@ public class WxPayServiceImpl implements WxPayService {
payOrder.setPayTime(paidTime);
payOrder.setTransactionId(transcationId);
payOrder.setcUserPhone(userPhone);
SysConfig config = sysConfigService.getByKey(SysConfigConstant.expired_days, payOrder);
WxProduct product = wxProductService.getCProduct(wxCUser, productId);
int days = 0;
if (null != product) {
days = product.getDays();
}
payOrder.setCreateTime(curr);
payOrder.setUpdateTime(curr);
payOrder.setValidStartTime(curr);
Date endtime = null;
if (isNew) {
endtime = DateUtils.getTimeAfterDays(Integer.parseInt(config.getConfigItemValue()), curr);
endtime = DateUtils.getTimeAfterDays(days, curr);
payOrder.setRemark("首次缴费");
}else {
if (isExpired) {
endtime = DateUtils.getTimeAfterDays(Integer.parseInt(config.getConfigItemValue()), curr);
endtime = DateUtils.getTimeAfterDays(days, curr);
payOrder.setRemark("过期缴费");
}else {
endtime = DateUtils.getTimeAfterDays(Integer.parseInt(config.getConfigItemValue()), wxCUser.getValidEndTime());
endtime = DateUtils.getTimeAfterDays(days, wxCUser.getValidEndTime());
payOrder.setRemark("未过期续费");
}
}


+ 1
- 12
gptService/src/main/java/com/iformall/service/wx/WxWeappService.java View File

@@ -74,21 +74,10 @@ public class WxWeappService {
updateUser.updateTenantInfo(cUser);
updateUser.setPhone(phoneNoInfo.getPhoneNumber());
updateUser.setUpdateDate(new Date());
if (null == updateUser.getValidStartTime() && null == updateUser.getValidEndTime()) {
SysConfig config = sysConfigService.getByKey(SysConfigConstant.freeDays, cUser);
int freeDays = Integer.parseInt(config.getConfigItemValue());
if (freeDays > 0 ) {
Date curr = new Date();
updateUser.setValidStartTime(curr);
updateUser.setValidEndTime(DateUtils.getTimeAfterDays(freeDays, curr));
cUser.setValidStartTime(updateUser.getValidStartTime());
cUser.setValidEndTime(updateUser.getValidEndTime());
}
}
wxCUserMapper.updateById(updateUser);
cUser.setPhone(updateUser.getPhone());
WxCUserCache.cacheApp(redisTemplate, cUser);
WxCUserCache.cacheWxCUser(redisTemplate, cUser);
return updateUser.getPhone();
} else {
throw new MallinkException(ErrorCode.PHONE_DECRYPTED_FAILD);


+ 3
- 0
gptService/src/main/java/com/iformall/utils/Constant.java View File

@@ -5,6 +5,9 @@ public class Constant {
public static final int H_EXPIRE = 3600000;//1个小时
public static final String appinfoPrev = "gpt:appinfo:";
public static final String cuserPre = "gpt:wxCUser:";
public static final String productPre = "gpt:wxProduct:";
public static final String productFirstPre = "gpt:wxProductFirst";
public static final String productListPre = "gpt:wxProductList";
public static final String payaccountPrev = "gpt:payAccount:";
public static final String currentUser = "currentUser";
public static final String TENANT_ID = "tenantId";


+ 0
- 4
gptService/src/main/java/com/iformall/utils/SysConfigConstant.java View File

@@ -2,10 +2,6 @@ package com.iformall.utils;

public class SysConfigConstant {

public static final String sale_price="salePrice";
public static final String price="price";
public static final String productImg="productImg";
public static final String expired_days = "expiredDays";
public static final String says_content_length = "saysContentLength";
public static final String freeDays="freeDays";
public static final String promotContentCount="promotContentCount";


+ 8
- 2
gptService/src/main/resources/mapper/WxProductMapper.xml View File

@@ -8,15 +8,17 @@
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="img" jdbcType="VARCHAR" property="img"/>
<result column="price" jdbcType="INTEGER" property="price"/>
<result column="salePrice" jdbcType="INTEGER" property="sale_price"/>
<result column="days" jdbcType="INTEGER" property="days"/>
<result column="rebate" jdbcType="INTEGER" property="rebate"/>
<result column="first" jdbcType="INTEGER" property="first"/>
</resultMap>

<sql id="allColumns">
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`name`,`price`,`salePrice`,
`days`,`rebate`
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`name`,`img`,`price`,`salePrice`,
`days`,`rebate`,`first`
</sql>

<sql id="dynamicWhereConditions">
@@ -41,6 +43,10 @@
<if test=" null != name ">
and `name` like concat('%', #{name},'%')
</if>
<if test=" null != first ">
and `first` = #{first}
</if>

<if test=" null != userIds ">
and c_user_id in


Loading…
Cancel
Save