From a472198a286efa7c2304e8691761a27d057f0744 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Wed, 19 Apr 2023 21:19:21 +0800 Subject: [PATCH] fix --- .../controller/WxUserGrantController.java | 12 ++++++--- .../java/com/iformall/domain/po/WxCUser.java | 4 +++ .../com/iformall/domain/po/WxPayOrder.java | 4 +++ .../com/iformall/mapper/WxCUserMapper.java | 3 +++ .../iformall/service/WxAppinfoService.java | 2 +- .../service/cache/WxAppInfoCache.java | 10 +++---- .../service/impl/WxAppinfoServiceImpl.java | 10 +++---- .../iformall/service/wx/WxPayServiceImpl.java | 26 ++++++++++++++++--- .../com/iformall/utils/SysConfigConstant.java | 1 + .../main/resources/mapper/WxAppinfoMapper.xml | 2 +- .../main/resources/mapper/WxCUserMapper.xml | 9 ++++++- .../resources/mapper/WxPayOrderMapper.xml | 4 ++- 12 files changed, 67 insertions(+), 20 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index 2d3105a..f451595 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -55,6 +55,9 @@ public class WxUserGrantController extends BaseController { @Autowired WxCUserService wxCUserService; + + @Autowired + SysConfigService sysConfigService; /** @@ -96,20 +99,23 @@ public class WxUserGrantController extends BaseController { @AuthIgnore @TenantIgnore @PostMapping("/login") - @ApiOperation(value = "用户登录", notes = "{\"code\":\"string\"}") + @ApiOperation(value = "用户登录", notes = "{\"appId\":\"string\",\"code\":\"string\"}") public ResultData userLogin(@RequestBody Map map) { Map resultMap = new HashMap(); String code = map.get("code"); + String appId = map.get("appId"); if (StringUtils.isBlank(code)) { return new ResultData(ErrorCode.PARAM_EMPITY.getCode(), "code不能为空"); } + if (StringUtils.isBlank(appId)) { + return new ResultData(ErrorCode.PARAM_EMPITY.getCode(), "appId不能为空"); + } String session_key = null; String openId = null; String unionId = null; try { - TenantEntity tenantEntity = this.getTenantInfo(); - WxAppinfo wxAppinfo = wxAppinfoServie.getCAppInfoFromRedis(tenantEntity.getTenantId()); + WxAppinfo wxAppinfo = wxAppinfoServie.getCAppInfoFromRedis(appId); WxMaJscode2SessionResult session = wxWeappService.jsCode2SessionInfo(code, wxAppinfo, false); logger.info("sessionResult: " + session); if (null != session) { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java index 36b22cc..aa59830 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java @@ -26,4 +26,8 @@ public class WxCUser extends TenantEntity { private Date updateDate; @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="生效开始时间",name="validStartTime") + private Date validStartTime; + @io.swagger.annotations.ApiModelProperty(value="生效结束时间",name="validEndTime") + private Date validEndTime; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java index 288273c..a64143b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayOrder.java @@ -45,6 +45,10 @@ public class WxPayOrder extends TenantEntity { private Date payTime; @io.swagger.annotations.ApiModelProperty(value="微信生成的订单号",name="transactionId") private String transactionId; + @io.swagger.annotations.ApiModelProperty(value="生效开始时间",name="validStartTime") + private Date validStartTime; + @io.swagger.annotations.ApiModelProperty(value="生效结束时间",name="validEndTime") + private Date validEndTime; @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java index f79fea6..2388078 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java @@ -1,5 +1,6 @@ package com.iformall.mapper; +import java.util.Date; import java.util.List; import com.iformall.common.CommonMapper; @@ -16,4 +17,6 @@ public interface WxCUserMapper extends CommonMapper { WxCUser selectById(@Param("id")Long id,@Param("tenantId")String tenantId); + void updateValidTime(@Param("id")Long id,@Param("tenantId")String tenantId,@Param("validBeginTime")Date validBeginTime,@Param("validEndTime")Date validEndTime); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxAppinfoService.java b/mallinkService/src/main/java/com/iformall/service/WxAppinfoService.java index bbc8781..0f2fea6 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxAppinfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxAppinfoService.java @@ -18,6 +18,6 @@ public interface WxAppinfoService { */ void saveOrUpdate(WxAppinfo record); - WxAppinfo getCAppInfoFromRedis(String tenantId); + WxAppinfo getCAppInfoFromRedis(String appId); } diff --git a/mallinkService/src/main/java/com/iformall/service/cache/WxAppInfoCache.java b/mallinkService/src/main/java/com/iformall/service/cache/WxAppInfoCache.java index 3e8cb3d..9311083 100644 --- a/mallinkService/src/main/java/com/iformall/service/cache/WxAppInfoCache.java +++ b/mallinkService/src/main/java/com/iformall/service/cache/WxAppInfoCache.java @@ -15,18 +15,18 @@ public class WxAppInfoCache { return key; } - public static WxAppinfo getCacheAppInfo(RedisTemplate wxAppinfoRedisTemplate,String tenantId) { - String key = getKey(tenantId); + public static WxAppinfo getCacheAppInfo(RedisTemplate wxAppinfoRedisTemplate,String appId) { + String key = getKey(appId); return RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxAppinfo.class); } public static void cacheApp(RedisTemplate wxAppinfoRedisTemplate,WxAppinfo appInfo) { - String key = getKey(appInfo.getTenantId()); + String key = getKey(appInfo.getAppId()); RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, appInfo, 3600*24*7); } - public static void removeCache(RedisTemplate wxAppinfoRedisTemplate,String tenantId) { - String key = getKey(tenantId); + public static void removeCache(RedisTemplate wxAppinfoRedisTemplate,String appId) { + String key = getKey(appId); RedisCacheUtils.removeCache(wxAppinfoRedisTemplate, key); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java index 0157972..7129c67 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java @@ -54,16 +54,16 @@ public class WxAppinfoServiceImpl implements WxAppinfoService { } @Override - public WxAppinfo getCAppInfoFromRedis(String tenantId) { - WxAppinfo record = WxAppInfoCache.getCacheAppInfo(wxAppinfoRedisTemplate, tenantId); + public WxAppinfo getCAppInfoFromRedis(String appId) { + WxAppinfo record = WxAppInfoCache.getCacheAppInfo(wxAppinfoRedisTemplate, appId); if (null == record) { - TenantEntity tenantEntity = new TenantEntity(); - tenantEntity.setTenantId(tenantId); - record = this.getCAppInfo(tenantEntity); + record = wxAppinfoMapper.findByAppId(appId); if(record != null){ WxAppInfoCache.cacheApp(wxAppinfoRedisTemplate, record); } } return record; } + + } diff --git a/mallinkService/src/main/java/com/iformall/service/wx/WxPayServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/wx/WxPayServiceImpl.java index 648d142..b067618 100644 --- a/mallinkService/src/main/java/com/iformall/service/wx/WxPayServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/wx/WxPayServiceImpl.java @@ -6,18 +6,22 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.domain.entity.PayAdapterResult; +import com.iformall.domain.po.SysConfig; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxPayOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.base.TenantEntity; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxAppinfoMapper; +import com.iformall.mapper.WxCUserMapper; import com.iformall.mapper.WxPayOrderMapper; import com.iformall.mapper.WxPayAccountMapper; +import com.iformall.service.SysConfigService; import com.iformall.service.WxAppinfoService; import com.iformall.service.WxPayAccountService; import com.iformall.utils.DateUtils; import com.iformall.utils.RedisLock; +import com.iformall.utils.SysConfigConstant; import com.iformall.utils.XmlUtil; import java.util.Date; import java.util.Map; @@ -29,6 +33,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; @Service public class WxPayServiceImpl implements WxPayService { @@ -58,6 +64,13 @@ public class WxPayServiceImpl implements WxPayService { @Autowired WxPayAccountService wxPayAccountService; + @Lazy + @Autowired + SysConfigService sysConfigService; + + @Autowired + WxCUserMapper wxCUserMapper; + @Override public PageInfo listPayOrderAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxPayOrderMapper.findList(record)); @@ -132,6 +145,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, String userPhone) throws Exception{ @@ -151,17 +165,23 @@ public class WxPayServiceImpl implements WxPayService { Long id = idworker.nextId(); payOrder.setId(id); payOrder.setTenantId(tenantId); - payOrder.setCreateTime(new Date()); - payOrder.setUpdateTime(new Date()); payOrder.setcUserId(cUserId); payOrder.setPayAmount(fee); payOrder.setPayTime(paidTime); payOrder.setTransactionId(transcationId); payOrder.setcUserPhone(userPhone); + SysConfig config = sysConfigService.getByKey(SysConfigConstant.expired_days, payOrder); + Date curr = new Date(); + payOrder.setCreateTime(curr); + payOrder.setUpdateTime(curr); + payOrder.setValidStartTime(curr); + Date endtime = DateUtils.getTimeAfterDays(Integer.parseInt(config.getConfigItemValue()), curr); + payOrder.setValidEndTime(endtime); wxPayOrderMapper.insert(payOrder); + wxCUserMapper.updateValidTime(cUserId, tenantId, curr, endtime); }catch(Exception e) { logger.error("handlePaidSuccess fail.",e); - throw new MallinkException(ErrorCode.SERVER_ERROR.getCode(),"支付失败"+orderId); + throw new MallinkException(ErrorCode.SERVER_ERROR.getCode(),"支付更新失败"+orderId); }finally { redisLock.unlock("carPayOrderLock_"+orderId, timeStr); } diff --git a/mallinkService/src/main/java/com/iformall/utils/SysConfigConstant.java b/mallinkService/src/main/java/com/iformall/utils/SysConfigConstant.java index d773b11..b7fc060 100644 --- a/mallinkService/src/main/java/com/iformall/utils/SysConfigConstant.java +++ b/mallinkService/src/main/java/com/iformall/utils/SysConfigConstant.java @@ -4,5 +4,6 @@ public class SysConfigConstant { public static final String sale_price="salePrice"; public static final String pay_call_back = "payCallBack"; + public static final String expired_days = "expiredDays"; } diff --git a/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml b/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml index b896b43..df251c2 100644 --- a/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml @@ -109,7 +109,7 @@ + + + update wx_c_user set valid_start_time = #{validBeginTime},valid_end_time = #{validEndTime},update_date = NOW() + where id = #{id} and tenant_id = #{tenantId} + diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index c9e1a59..098ee96 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -12,11 +12,13 @@ + + `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`c_user_id`,`c_user_phone`,`pay_amount`, - `pay_time`,`transaction_id` + `pay_time`,`transaction_id`,`valid_start_time`,`valid_end_time`