最近版本保存

master
1020109007@qq.com 2021-12-14 15:55:31 +08:00
parent 644e02547e
commit 30be2b01e2
40 changed files with 857 additions and 408 deletions

View File

@ -1,8 +1,12 @@
package com.ruoyi.quartz.task; package com.ruoyi.web.controller.task;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ruoyi.common.utils.http.HttpUtils;
/** /**
* *
* *
@ -11,18 +15,23 @@ import org.springframework.stereotype.Component;
@Component("SegchkTask") @Component("SegchkTask")
public class SegchkTask public class SegchkTask
{ {
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) private static final Logger logger = LoggerFactory.getLogger(SegchkTask.class);
public void segchkMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
{ {
System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
} }
public void ryParams(String params) public void segchkParams(String params)
{ {
System.out.println("执行有参方法:" + params); System.out.println("执行有参方法:" + params);
} }
public void ryNoParams() public void segchkNoParams()
{ {
System.out.println("执行无参方法"); System.out.println("执行无参方法");
} }
public void segchkGetWxAccessToken(){
// HttpUtils.sendGet();
}
} }

View File

@ -1,8 +1,9 @@
package com.ruoyi.login; package com.ruoyi.login;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.segchk.domain.SegchkUserWebReq; import com.ruoyi.segchk.domain.SegchkUserWebReq;
import com.ruoyi.util.Claims; import com.ruoyi.util.*;
import com.ruoyi.appletsutil.ResultCode; import com.ruoyi.appletsutil.ResultCode;
import com.ruoyi.appletsutil.UnAuthorizedException; import com.ruoyi.appletsutil.UnAuthorizedException;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
@ -11,14 +12,12 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.SnowflakeIdWorker; import com.ruoyi.common.utils.SnowflakeIdWorker;
import com.ruoyi.segchk.domain.SegchkUserWechat; import com.ruoyi.segchk.domain.SegchkUserWechat;
import com.ruoyi.util.WeChatAppletLoginResponse;
import com.ruoyi.util.WechatSetting;
import com.ruoyi.member.service.*; import com.ruoyi.member.service.*;
import com.ruoyi.member.vo.BindParams; import com.ruoyi.member.vo.BindParams;
import com.ruoyi.setting.bean.WechatPaySet; import com.ruoyi.setting.bean.WechatPaySet;
import com.ruoyi.setting.service.ILsPaySettingService; import com.ruoyi.setting.service.ILsPaySettingService;
import com.ruoyi.util.CommonConstant; import com.ruoyi.util.bean.SegUserProfile;
import com.ruoyi.util.WeChatAppletUtils; import com.ruoyi.util.bean.UserInfoProfile;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -34,6 +33,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -272,6 +273,7 @@ public class SegChkLoginController {
segchkUserWechat.setUnionId(weChatAppletLoginResponse.getUnionid()); segchkUserWechat.setUnionId(weChatAppletLoginResponse.getUnionid());
segchkUserWechat.setProviderId(Long.valueOf(bindParams.getProviderId())); segchkUserWechat.setProviderId(Long.valueOf(bindParams.getProviderId()));
segchkUserWechat.setNickName(bindParams.getNickName()); segchkUserWechat.setNickName(bindParams.getNickName());
segchkUserWechat.setIconUrl(bindParams.getAvatar()); segchkUserWechat.setIconUrl(bindParams.getAvatar());
// 将用户与微信openid绑定 // 将用户与微信openid绑定
int ret = weChatCustomerLinkService.addSegchkUserWechat(segchkUserWechat, bindParams.getUserLevel()); int ret = weChatCustomerLinkService.addSegchkUserWechat(segchkUserWechat, bindParams.getUserLevel());
@ -296,8 +298,25 @@ public class SegChkLoginController {
redisService.setCacheObject(token, claims, loginexpire, TimeUnit.HOURS); redisService.setCacheObject(token, claims, loginexpire, TimeUnit.HOURS);
} }
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_BIND_OPENID).append("-").append(token); StringBuilder sb = new StringBuilder(CommonConstant.APPLET_BIND_OPENID).append("-").append(token);
redisService.setCacheObject(sb.toString(), segchkUserWechat, 7100, TimeUnit.SECONDS); redisService.setCacheObject(sb.toString(), segchkUserWechat, 7200, TimeUnit.SECONDS);
weChatAppletLoginResponse.getSession_key();
// 测试解析getuserprofile返回结果
try {
if(!ObjectUtils.isEmpty(bindParams.getProfileRes())) {
SegUserProfile segUserProfile = JSON.parseObject(bindParams.getProfileRes(), SegUserProfile.class);
logger.info("getUserProfile info is: ({})", segUserProfile.toString());
UserInfoProfile userInfoProfile = JSON.parseObject(segUserProfile.getUserInfo(), UserInfoProfile.class);
logger.info("getUserInfo from userProfile is: ({})", userInfoProfile.toString());
String decryptres = WeChatAppletUtils.getUserInfoFromUserProfile(weChatAppletLoginResponse.getSession_key(), segUserProfile);
logger.debug("getUserProfile decrypt res: ({})", decryptres);
}
} catch (Exception e){
logger.error("getUserProfile wrong! {}", e.getMessage());
e.printStackTrace();
}
return AjaxResult.success("绑定成功", token); return AjaxResult.success("绑定成功", token);
} }

View File

@ -88,6 +88,11 @@ public class SegchkDefaultStoreController extends BaseController
// 登录超时时长,单位天,-1永久有效 // 登录超时时长,单位天,-1永久有效
@Value("${yzytest.login.loginexpire:#{1}}") @Value("${yzytest.login.loginexpire:#{1}}")
private Integer loginexpire; private Integer loginexpire;
// 如果是一张新会员卡,在第一次核消是是否给商家返利
@Value("${segchk.servicecheck.storereward.enable:false}")
private Boolean stoRewardWithChk;
/** /**
* seg * seg
* { * {
@ -302,7 +307,7 @@ public class SegchkDefaultStoreController extends BaseController
ajax.put(MSG_TAG, "该预约单在本店已无可用权益次数"); ajax.put(MSG_TAG, "该预约单在本店已无可用权益次数");
} }
else if(segchkServiceOrderChkTestResp.getCanFree() == 1){ else if(segchkServiceOrderChkTestResp.getCanFree() == 1){
int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, likegoId); int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, likegoId, stoRewardWithChk);
ajax.put(CODE_TAG, "200"); ajax.put(CODE_TAG, "200");
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(null); segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(null);
@ -313,7 +318,7 @@ public class SegchkDefaultStoreController extends BaseController
redisService.setCacheObject(sb.toString(), likegoId, 5, TimeUnit.MINUTES); redisService.setCacheObject(sb.toString(), likegoId, 5, TimeUnit.MINUTES);
} }
else { else {
int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, likegoId); int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, likegoId, stoRewardWithChk);
if(ret != 3){ if(ret != 3){
ajax.put(CODE_TAG, "500"); ajax.put(CODE_TAG, "500");
@ -322,6 +327,13 @@ public class SegchkDefaultStoreController extends BaseController
else{ else{
ajax.put(CODE_TAG, "200"); ajax.put(CODE_TAG, "200");
ajax.put(MSG_TAG, "核消成功"); ajax.put(MSG_TAG, "核消成功");
List<SegchkRecommenderStoreLableWeb> lables = segchkServiceOrderChkTestResp.getSegchkRecommenderStoreLableWebList();
SegchkRecommenderStoreLableWeb lable = new SegchkRecommenderStoreLableWeb();
lable.setLableId(0);
lable.setLableTypeId(1);
lable.setLableName("本店尊享");
lables.add(lable);
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(lables);
ajax.put(DATA_TAG, segchkServiceOrderChkTestResp); ajax.put(DATA_TAG, segchkServiceOrderChkTestResp);
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append("-").append(segchkServiceOrderChkTestResp.getUserId()); StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append("-").append(segchkServiceOrderChkTestResp.getUserId());
logger.debug("ServiceCheckTest will store likego : {}:{}", sb.toString(), likegoId); logger.debug("ServiceCheckTest will store likego : {}:{}", sb.toString(), likegoId);

View File

@ -1,9 +1,7 @@
package com.ruoyi.segchk; package com.ruoyi.segchk;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.appletsutil.ResultCode; import com.ruoyi.appletsutil.ResultCode;
import com.ruoyi.appletsutil.UnAuthorizedException; import com.ruoyi.appletsutil.UnAuthorizedException;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.UnAuth; import com.ruoyi.common.annotation.UnAuth;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
@ -12,7 +10,6 @@ import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.member.service.WeChatCustomerLinkService; import com.ruoyi.member.service.WeChatCustomerLinkService;
import com.ruoyi.segchk.domain.*; import com.ruoyi.segchk.domain.*;
import com.ruoyi.segchk.service.*; import com.ruoyi.segchk.service.*;
@ -20,7 +17,6 @@ import com.ruoyi.setting.bean.WechatPaySet;
import com.ruoyi.setting.service.ILsPaySettingService; import com.ruoyi.setting.service.ILsPaySettingService;
import com.ruoyi.util.*; import com.ruoyi.util.*;
import com.ruoyi.util.bean.PrepayResult; import com.ruoyi.util.bean.PrepayResult;
import com.ruoyi.util.bean.WechatApletPrepayResult;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -199,7 +195,8 @@ public class SegchkDefaultUserController extends BaseController
} }
segchkServiceOrderWebReq.setUserId(claims.getUserId()); segchkServiceOrderWebReq.setUserId(claims.getUserId());
List<SegchkServiceOrderWebReq> segchkServiceOrderWebReqList = segchkUserIndexService.selectUserOrderPredCardListWebInfo(segchkServiceOrderWebReq); List<SegchkServiceOrderWebReq> segchkServiceOrderWebReqList = segchkUserIndexService.selectUserOrderPredCardListWebInfo(segchkServiceOrderWebReq);
return getDataTable(segchkServiceOrderWebReqList); boolean anyMatch = segchkServiceOrderWebReqList.parallelStream().anyMatch(v -> v.getTypeId() == 0);
return getDataTable(anyMatch ? segchkServiceOrderWebReqList : null);
} }
/** /**
@ -704,7 +701,7 @@ public class SegchkDefaultUserController extends BaseController
if(!StringUtils.isEmpty(segchkUserCharge.getCharge())){ if(!StringUtils.isEmpty(segchkUserCharge.getCharge())){
// 如果待生成订单需要用户调起支付时 // 如果待生成订单需要用户调起支付时
segchkUserWechat = getSegchkUserWechat(request, segchkUserCharge.getSearchValue(), claims.getUserLevel()); segchkUserWechat = getSegchkUserWechat(request, segchkUserCharge.getSearchValue(), claims);
if(ObjectUtils.isEmpty(segchkUserWechat)){ if(ObjectUtils.isEmpty(segchkUserWechat)){
return AjaxResult.error(500, "微信绑定失败!"); return AjaxResult.error(500, "微信绑定失败!");
@ -804,7 +801,7 @@ public class SegchkDefaultUserController extends BaseController
return AjaxResult.error(301, "运营商无法线上提现"); return AjaxResult.error(301, "运营商无法线上提现");
} }
SegchkUserWechat segchkUserWechat = null; SegchkUserWechat segchkUserWechat = null;
segchkUserWechat = getSegchkUserWechat(request, segchkUserCashOpsReq.getSearchValue(), claims.getUserLevel()); segchkUserWechat = getSegchkUserWechat(request, segchkUserCashOpsReq.getSearchValue(), claims);
if(ObjectUtils.isEmpty(segchkUserWechat)){ if(ObjectUtils.isEmpty(segchkUserWechat)){
return AjaxResult.error(500, "微信绑定失败!"); return AjaxResult.error(500, "微信绑定失败!");
@ -974,11 +971,12 @@ public class SegchkDefaultUserController extends BaseController
return ObjectUtils.isEmpty(claims) ? null : (Claims) claims; return ObjectUtils.isEmpty(claims) ? null : (Claims) claims;
} }
private SegchkUserWechat getSegchkUserWechat(HttpServletRequest request, String code, int userLevel) { private SegchkUserWechat getSegchkUserWechat(HttpServletRequest request, String code, Claims claims) {
String token = getToken(request); String token = getToken(request);
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_BIND_OPENID).append("-").append(token); StringBuilder sb = new StringBuilder(CommonConstant.APPLET_BIND_OPENID).append("-").append(token);
SegchkUserWechat segchkUserWechat = redisService.getCacheObject(sb.toString()); SegchkUserWechat segchkUserWechat = redisService.getCacheObject(sb.toString());
// 暂时未解决重复获取openid问题
// segchkUserWechat = null;
if(ObjectUtils.isEmpty(segchkUserWechat)){ if(ObjectUtils.isEmpty(segchkUserWechat)){
// redis没有用户微信openid时重新获取 // redis没有用户微信openid时重新获取
segchkUserWechat = new SegchkUserWechat(); segchkUserWechat = new SegchkUserWechat();
@ -997,13 +995,16 @@ public class SegchkDefaultUserController extends BaseController
} }
segchkUserWechat.setOpenid(weChatAppletLoginResponse.getOpenid()); segchkUserWechat.setOpenid(weChatAppletLoginResponse.getOpenid());
segchkUserWechat.setUnionId(weChatAppletLoginResponse.getUnionid()); segchkUserWechat.setUnionId(weChatAppletLoginResponse.getUnionid());
redisService.setCacheObject(sb.toString(), segchkUserWechat, 7100, TimeUnit.SECONDS); redisService.setCacheObject(sb.toString(), segchkUserWechat, 7200, TimeUnit.SECONDS);
int ret = weChatCustomerLinkService.addSegchkUserWechat(segchkUserWechat, String.valueOf(userLevel)); segchkUserWechat.setUserId(claims.getUserId());
segchkUserWechat.setProviderId(claims.getProviderId());
int ret = weChatCustomerLinkService.addSegchkUserWechat(segchkUserWechat, String.valueOf(claims.getUserLevel()));
if(ret < 1){ if(ret < 1){
logger.error("addSegchkUserWechat failed with ({}) --- ({})", segchkUserWechat.toString(), userLevel); logger.error("addSegchkUserWechat failed with ({}) --- ({})", segchkUserWechat.toString(), claims);
} }
logger.debug("getSegchkUserWechat update user wechat with ({})---({})", segchkUserWechat.toString(), userLevel); logger.debug("getSegchkUserWechat update user wechat with ({})---({})", segchkUserWechat.toString(), claims);
} }
logger.debug("getSegchkUserWechat get res ({})", ObjectUtils.isEmpty(segchkUserWechat) ? null : segchkUserWechat.toString());
return ObjectUtils.isEmpty(segchkUserWechat) ? null : (SegchkUserWechat) segchkUserWechat; return ObjectUtils.isEmpty(segchkUserWechat) ? null : (SegchkUserWechat) segchkUserWechat;

View File

@ -2,6 +2,7 @@ package com.ruoyi.util;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -25,4 +26,8 @@ public class IndexController extends BaseController {
return wxchecktxt; return wxchecktxt;
} }
@GetMapping("getWxAccessToken")
public String getWxAccessToken(){
return null;
}
} }

View File

@ -127,6 +127,9 @@ yzytest:
smsplatid: 3 smsplatid: 3
segchk: segchk:
servicecheck:
storereward:
enable: false
# 提现额度 # 提现额度
cash: cash:
# 商户提现额度 # 商户提现额度

View File

@ -120,7 +120,10 @@ yzytest:
loginexpire: 8 loginexpire: 8
segchk: segchk:
# 提现额度 servicecheck:
storereward:
enable: false
# 提现额度
cash: cash:
# 商户提现额度 # 商户提现额度
store_threshold: 300.0 store_threshold: 300.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -434,7 +434,8 @@ Authorization: Bearer {{bindtoken}}
{ {
"userId": 241, "userId": 241,
"providerId": 4, "providerId": 4,
"userLevel": 0, "userLevel": 2,
"cardFlag": 0,
"remark": "999999" "remark": "999999"
} }

View File

@ -18,6 +18,9 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
/** /**
* Created by on 17/7/17. * Created by on 17/7/17.
* *
@ -186,23 +189,28 @@ public class LoginServiceImpl implements LoginService {
segchkUserWebResp = segchkProviderIndexService.selectSegchkProviderWebInfo(segchkUserWebReq); segchkUserWebResp = segchkProviderIndexService.selectSegchkProviderWebInfo(segchkUserWebReq);
segchkUserWebResp.setUserLevel(0); segchkUserWebResp.setUserLevel(0);
segchkUserWebResp.setUserId(segchkUserWebReq.getProviderId()); segchkUserWebResp.setUserId(segchkUserWebReq.getProviderId());
ajaxResult = AjaxResult.success(segchkUserWebResp);
break; break;
} }
case 1: { case 1: {
segchkUserWebResp = segchkStoreIndexService.selectSegchkStoreWebInfo(segchkUserWebReq); segchkUserWebResp = segchkStoreIndexService.selectSegchkStoreWebInfo(segchkUserWebReq);
segchkUserWebResp.setUserLevel(1); segchkUserWebResp.setUserLevel(1);
ajaxResult = AjaxResult.success(segchkUserWebResp);
break; break;
} }
case 2: { case 2: {
segchkUserWebResp = segchkUserIndexService.selectSegchkUserWebInfo(segchkUserWebReq); segchkUserWebResp = segchkUserIndexService.selectSegchkUserWebInfo(segchkUserWebReq);
segchkUserWebResp.setUserLevel(2); segchkUserWebResp.setUserLevel(2);
ajaxResult = AjaxResult.success(segchkUserWebResp);
break; break;
} }
default: ajaxResult = AjaxResult.error("301", "用户身份异常"); default: return AjaxResult.error("301", "用户身份异常");
} }
try {
segchkUserWebResp.setUserName(URLDecoder.decode(segchkUserWebResp.getUserName(), "utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
ajaxResult = AjaxResult.success(segchkUserWebResp);
return ajaxResult; return ajaxResult;
} }

View File

@ -50,6 +50,12 @@ public class BindParams extends BaseEntity {
@ApiModelProperty(value = "头像") @ApiModelProperty(value = "头像")
private String avatar; private String avatar;
/**
* getUserProfile
*/
@ApiModelProperty(value = "getUserProfile返回")
private String profileRes;
/** /**
* *
@ -110,6 +116,14 @@ public class BindParams extends BaseEntity {
this.avatar = avatar; this.avatar = avatar;
} }
public String getProfileRes() {
return profileRes;
}
public void setProfileRes(String profileRes) {
this.profileRes = profileRes;
}
@Override @Override
public String toString() { public String toString() {
return "BindParams{" + return "BindParams{" +
@ -119,6 +133,7 @@ public class BindParams extends BaseEntity {
", code='" + code + '\'' + ", code='" + code + '\'' +
", nickName='" + nickName + '\'' + ", nickName='" + nickName + '\'' +
", avatar='" + avatar + '\'' + ", avatar='" + avatar + '\'' +
", profileRes='" + profileRes + '\'' +
'}'; '}';
} }
} }

View File

@ -1,20 +1,38 @@
package com.ruoyi.segchk.domain; package com.ruoyi.segchk.domain;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.util.ObjectUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
public class SegchkChargeReward extends BaseEntity { public class SegchkChargeReward extends BaseEntity {
// 会员卡类型id
private Integer cardTypeId; private Integer cardTypeId;
// 会员卡id
private Long cardId;
// 对应用户id
private Long userId; private Long userId;
// 运营商id
private Long providerId; private Long providerId;
// 充值id
private Long chargeId; private Long chargeId;
// 奖励id
private Long rewardId; private Long rewardId;
// 使用次数
private Long useCount;
// 在目标商家核消次数
private Long chkCount;
// 充值金额
private BigDecimal charge; private BigDecimal charge;
// 余额使用额度
private BigDecimal accountUsed; private BigDecimal accountUsed;
// 推荐人id
private Long userRecommenders; private Long userRecommenders;
// 推荐人角色
private Integer recommendersLevel; private Integer recommendersLevel;
// 持卡用户充值成功次数
private Integer totalChargeCount; private Integer totalChargeCount;
// 奖励金额
private BigDecimal reward; private BigDecimal reward;
public Integer getCardTypeId() { public Integer getCardTypeId() {
@ -105,14 +123,41 @@ public class SegchkChargeReward extends BaseEntity {
this.rewardId = rewardId; this.rewardId = rewardId;
} }
public Long getCardId() {
return cardId;
}
public void setCardId(Long cardId) {
this.cardId = cardId;
}
public Long getUseCount() {
return useCount;
}
public void setUseCount(Long useCount) {
this.useCount = useCount;
}
public Long getChkCount() {
return chkCount;
}
public void setChkCount(Long chkCount) {
this.chkCount = chkCount;
}
@Override @Override
public String toString() { public String toString() {
return "SegchkChargeReward{" + return "SegchkChargeReward{" +
"cardTypeId=" + cardTypeId + "cardTypeId=" + cardTypeId +
", cardId=" + cardId +
", userId=" + userId + ", userId=" + userId +
", providerId=" + providerId + ", providerId=" + providerId +
", chargeId=" + chargeId + ", chargeId=" + chargeId +
", rewardId=" + rewardId + ", rewardId=" + rewardId +
", useCount=" + useCount +
", chkCount=" + chkCount +
", charge=" + charge + ", charge=" + charge +
", accountUsed=" + accountUsed + ", accountUsed=" + accountUsed +
", userRecommenders=" + userRecommenders + ", userRecommenders=" + userRecommenders +
@ -121,4 +166,42 @@ public class SegchkChargeReward extends BaseEntity {
", reward=" + reward + ", reward=" + reward +
'}'; '}';
} }
public int validateForCheck(Long storeId){
// 根据核消商家,判断是否可以返利
if(ObjectUtils.isEmpty(this.getRecommendersLevel()) || this.getRecommendersLevel() == 2 || this.getRecommendersLevel() == 1){
// 只要持卡用户推荐人不是平台。就不可以返利
return -1;
}
else if(this.getUseCount() > 1 || this.getChkCount() > 1){
// 该卡已发生过核消
return -2;
}
else if(ObjectUtils.isEmpty(this.getReward())){
// 该商家不支持该卡的核消,也不可以返利
return -3;
}
else if(this.getReward().compareTo(new BigDecimal(0.0)) == 0){
// 该商家不需要返利
return -4;
}
return 0;
}
public void mkReward() {
switch (this.getTotalChargeCount()){
case 0: break;
case 1: {
this.setReward(this.getReward().divide(new BigDecimal("2"), 2, BigDecimal.ROUND_HALF_UP));break;
}
case 2: {
this.setReward(this.getReward().divide(new BigDecimal("3"), 2, BigDecimal.ROUND_HALF_UP));break;
}
default: {
this.setReward(new BigDecimal("0.0"));
break;
}
}
}
} }

View File

@ -1,112 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* seg segchk_comment_acc
*
* @author yinzhiying
* @date 2021-08-23
*/
public class SegchkCommentAcc extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 更新id全表唯一 */
@Excel(name = "更新id全表唯一")
private Long updateId;
/** 评价次数 */
@Excel(name = "评价次数")
private Long starCount;
/** 评价总分 */
@Excel(name = "评价总分")
private Long starLevel;
/** 商家id全局唯一 */
@Excel(name = "商家id全局唯一")
private Long storeId;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
public void setUpdateId(Long updateId)
{
this.updateId = updateId;
}
public Long getUpdateId()
{
return updateId;
}
public void setStarCount(Long starCount)
{
this.starCount = starCount;
}
public Long getStarCount()
{
return starCount;
}
public void setStarLevel(Long starLevel)
{
this.starLevel = starLevel;
}
public Long getStarLevel()
{
return starLevel;
}
public void setStoreId(Long storeId)
{
this.storeId = storeId;
}
public Long getStoreId()
{
return storeId;
}
public void setProviderId(Long providerId)
{
this.providerId = providerId;
}
public Long getProviderId()
{
return providerId;
}
public void setModTime(Date modTime)
{
this.modTime = modTime;
}
public Date getModTime()
{
return modTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("updateId", getUpdateId())
.append("starCount", getStarCount())
.append("starLevel", getStarLevel())
.append("storeId", getStoreId())
.append("providerId", getProviderId())
.append("modTime", getModTime())
.toString();
}
}

View File

@ -1,135 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
/**
* seg segchk_user_basic_info
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkUserWebCardResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 卡名称 */
@Excel(name = "卡名称")
private String cardName;
/** 卡提供商(商家名称) */
@Excel(name = "卡提供商")
private String storeName;
/** 使用次数 */
@Excel(name = "使用次数")
private Integer useCount;
/** 剩余次数 */
@Excel(name = "剩余次数")
private Integer leftCount;
/** 有效期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "有效期", width = 30, dateFormat = "yyyy-MM-dd")
private Date effectiveTime;
/** 卡券标识,0会员卡1券或赠卡 */
@Excel(name = "卡券标识")
private Integer typeFlag;
/** 卡券状态 */
@Excel(name = "卡券状态")
private String cardStatus;
/** 卡券说明 */
@Excel(name = "卡券说明")
private String cardContent;
/** 卡券说明 */
@Excel(name = "卡券说明")
private String bgUrl;
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public Integer getUseCount() {
return useCount;
}
public void setUseCount(Integer useCount) {
this.useCount = useCount;
}
public Integer getLeftCount() {
return leftCount;
}
public void setLeftCount(Integer leftCount) {
this.leftCount = leftCount;
}
public Date getEffectiveTime() {
return effectiveTime;
}
public void setEffectiveTime(Date effectiveTime) {
this.effectiveTime = effectiveTime;
}
public Integer getTypeFlag() {
return typeFlag;
}
public void setTypeFlag(Integer typeFlag) {
this.typeFlag = typeFlag;
}
public String getCardStatus() {
return cardStatus;
}
public void setCardStatus(String cardStatus) {
this.cardStatus = cardStatus;
}
public String getCardContent() {
return cardContent;
}
public void setCardContent(String cardContent) {
this.cardContent = cardContent;
}
@Override
public String toString() {
return "SegchkUserWebCardResp{" +
"cardName='" + cardName + '\'' +
", storeName='" + storeName + '\'' +
", useCount=" + useCount +
", leftCount=" + leftCount +
", effectiveTime=" + effectiveTime +
", typeFlag=" + typeFlag +
", cardStatus='" + cardStatus + '\'' +
", cardContent='" + cardContent + '\'' +
'}';
}
}

View File

@ -149,4 +149,6 @@ public interface SegchkStoreIndexMapper {
public int addAccountByReward(SegchkChargeReward segchkChargeReward); public int addAccountByReward(SegchkChargeReward segchkChargeReward);
Long getVipCardFromLikego(Long likegoId); Long getVipCardFromLikego(Long likegoId);
public int addCommentAccByComment(Long commentId);
} }

View File

@ -126,7 +126,11 @@ public interface SegchkUserIndexMapper {
public String selectSegchkUserName(String userId); public String selectSegchkUserName(String userId);
public SegchkChargeReward selectSegchkRewardInfo(SegchkUserCharge segchkUserCharge); public SegchkChargeReward selectSegchkRewardInfoForCharge(Map<String, Object> paramsMap);
int addAccountByReward(SegchkChargeReward segchkChargeReward); int addAccountByReward(SegchkChargeReward segchkChargeReward);
Map<String, Object> getCardInfo(Map<String, Object> paramsMap);
SegchkChargeReward selectSegchkRewardInfoForCheck(Map<String, Object> params);
} }

View File

@ -186,4 +186,6 @@ public interface ISegchkStoreIndexService
Long getVipCardFromLikego(Long likegoId); Long getVipCardFromLikego(Long likegoId);
HashMap<String, Object> getCustomService(Long providerId); HashMap<String, Object> getCustomService(Long providerId);
public int addCommentAccByComment(Long commentId);
} }

View File

@ -108,9 +108,10 @@ public interface ISegchkUserIndexService
* *
* @param segchkServiceOrderChkTestResp * @param segchkServiceOrderChkTestResp
* @param likegoId id * @param likegoId id
* @param stoRewardWithChk
* @return * @return
*/ */
public int OrderCheckTransaction(SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp, Long likegoId); public int OrderCheckTransaction(SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp, Long likegoId, Boolean stoRewardWithChk);
/** /**
* *
@ -121,6 +122,15 @@ public interface ISegchkUserIndexService
*/ */
public void chargeRet(String chargeId, int ret); public void chargeRet(String chargeId, int ret);
/**
*
*
* @param params
* @return
*/
int makeChargeReward(Map<String, Object> params);
/** /**
* idid * idid
* *

View File

@ -361,7 +361,7 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
@Override @Override
public Integer addStoreSelfCard(SegchkStoreSelfMgt segchkStoreSelfMgt) { public Integer addStoreSelfCard(SegchkStoreSelfMgt segchkStoreSelfMgt) {
if(segchkStoreSelfMgt.getTypeId() != 2){ if(segchkStoreSelfMgt.getTypeId() == 2){
// 说明是优惠券 // 说明是优惠券
SegchkPreferenceLable segchkPreferenceLable = segchkPreferenceLableService.selectSegchkPreferenceLableByPreferenceId(segchkStoreSelfMgt.getLableId()); SegchkPreferenceLable segchkPreferenceLable = segchkPreferenceLableService.selectSegchkPreferenceLableByPreferenceId(segchkStoreSelfMgt.getLableId());
segchkStoreSelfMgt.setFreeName(segchkPreferenceLable.getPreferenceName()); segchkStoreSelfMgt.setFreeName(segchkPreferenceLable.getPreferenceName());
@ -383,4 +383,11 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
public HashMap<String, Object> getCustomService(Long providerId) { public HashMap<String, Object> getCustomService(Long providerId) {
return segchkProviderMgtService.getCustomService(providerId); return segchkProviderMgtService.getCustomService(providerId);
} }
@Override
public int addCommentAccByComment(Long commentId) {
int ret = segchkStoreIndexMapper.addCommentAccByComment(commentId);
logger.debug("addCommentAccByComment with ({}) {}", commentId, (ret > 0 ? "successed" : "failed"));
return ret;
}
} }

View File

@ -1,5 +1,6 @@
package com.ruoyi.segchk.service.impl; package com.ruoyi.segchk.service.impl;
import com.alibaba.fastjson.JSON;
import com.ruoyi.order.service.impl.PaySupplier; import com.ruoyi.order.service.impl.PaySupplier;
//import com.ruoyi.order.service.impl.WechatWithdrawSupplier; //import com.ruoyi.order.service.impl.WechatWithdrawSupplier;
import com.ruoyi.segchk.domain.*; import com.ruoyi.segchk.domain.*;
@ -21,7 +22,9 @@ import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.InputStream; import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -291,48 +294,81 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
* *
* @param segchkServiceOrderChkTestResp * @param segchkServiceOrderChkTestResp
* @param likegoId * @param likegoId
* @param stoRewardWithChk
* @return * @return
*/ */
@Override @Override
@Transactional @Transactional
public int OrderCheckTransaction(SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp, Long likegoId) { public int OrderCheckTransaction(SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp, Long likegoId, Boolean stoRewardWithChk) {
logger.debug("OrderCheckTransaction with: {}---{}", segchkServiceOrderChkTestResp.toString(), likegoId); logger.debug("OrderCheckTransaction with: {}---{}", segchkServiceOrderChkTestResp.toString(), likegoId);
int ret = 0; int ret = 0;
Long tmpStoreId = segchkServiceOrderChkTestResp.getStoreId();
if(segchkServiceOrderChkTestResp.getCardType() == 0){ if(segchkServiceOrderChkTestResp.getCardType() == 0){
// 说明是会员卡,则先更新会员卡次数。然后插入核消记录,最后更新预约订单状态 // 说明是会员卡,则先更新会员卡次数。然后插入核消记录,最后更新预约订单状态
// SegchkUserVip segchkUserVip = new SegchkUserVip(); // SegchkUserVip segchkUserVip = new SegchkUserVip();
logger.debug("OrderCheckTransaction will check with vip card"); logger.debug("OrderCheckTransaction will check with vip card");
ret += segchkIndexUserVipMapper.updateSegchkUserVipCheck(segchkServiceOrderChkTestResp.getCardId()); ret += segchkIndexUserVipMapper.updateSegchkUserVipCheck(segchkServiceOrderChkTestResp.getCardId());
System.out.println(ret); logger.debug("OrderCheckTransaction checked({}) with vip card({})"
, (ret == 1 ? "successed" : "failed")
, segchkServiceOrderChkTestResp.getCardId());
SegchkServiceChk segchkServiceChk = new SegchkServiceChk(); SegchkServiceChk segchkServiceChk = new SegchkServiceChk();
segchkServiceChk.setCardId(segchkServiceOrderChkTestResp.getCardId()); segchkServiceChk.setCardId(segchkServiceOrderChkTestResp.getCardId());
// segchkServiceChk.setCardTypeId(0L); // segchkServiceChk.setCardTypeId(0L);
segchkServiceChk.setProviderId(segchkServiceOrderChkTestResp.getProviderId()); segchkServiceChk.setProviderId(segchkServiceOrderChkTestResp.getProviderId());
segchkServiceChk.setStoreId(segchkServiceOrderChkTestResp.getStoreId()); segchkServiceChk.setStoreId(tmpStoreId);
segchkServiceChk.setUserId(segchkServiceOrderChkTestResp.getUserId()); segchkServiceChk.setUserId(segchkServiceOrderChkTestResp.getUserId());
ret += segchkServiceChkMapper.insertSegchkServiceChk(segchkServiceChk); ret += segchkServiceChkMapper.insertSegchkServiceChk(segchkServiceChk);
System.out.println(ret); logger.debug("OrderCheckTransaction save({}) service-check with ({})"
, (ret == 2 ? "successed" : "failed")
, segchkServiceChk.toString());
if(stoRewardWithChk){
// 如果允许,会员卡第一次核消,将给该商家返利
Map<String, Object> params = new HashMap<>();
params.put("cardId", segchkServiceChk.getCardId());
params.put("storeId", tmpStoreId);
params.put("userId", segchkServiceChk.getUserId());
// 根据卡号id获取会员卡相关信息
SegchkChargeReward segchkChargeReward = segchkUserIndexMapper.selectSegchkRewardInfoForCheck(params);
int validateForCheck = segchkChargeReward.validateForCheck(tmpStoreId);
if(validateForCheck < 0){
logger.warn("validateForCheselectUserOrderPredCardListWebInfock can not make reword for store({}), because {}", tmpStoreId, (validateForCheck == -1 ? "持卡用户推荐人不是平台" : validateForCheck == -2 ? "已使用过" : validateForCheck == -3 ? "该商家不支持该卡的核消" : "该商家不需要返利"));
}
else{
segchkChargeReward.mkReward();
segchkChargeReward.setRecommendersLevel(1);
segchkChargeReward.setUserRecommenders(tmpStoreId);
makeStoreReward(segchkChargeReward);
}
}
} }
else { else {
// 说明是优惠券或赠卡则先更新赠卡次数。然后插入核消记录,最后更新预约订单状态 // 说明是优惠券或赠卡则先更新赠卡次数。然后插入核消记录,最后更新预约订单状态
logger.debug("OrderCheckTransaction will check with store card"); logger.debug("OrderCheckTransaction will check with store card");
ret += segchkStoreSelfMgtMapper.updateSegchkUserVipCheck(segchkServiceOrderChkTestResp.getCardId()); ret += segchkStoreSelfMgtMapper.updateSegchkUserVipCheck(segchkServiceOrderChkTestResp.getCardId());
System.out.println(ret); logger.debug("OrderCheckTransaction checked({}) with vip card({})"
, (ret == 1 ? "successed" : "failed")
, segchkServiceOrderChkTestResp.getCardId());
SegchkSelfServiceChk segchkSelfServiceChk = new SegchkSelfServiceChk(); SegchkSelfServiceChk segchkSelfServiceChk = new SegchkSelfServiceChk();
segchkSelfServiceChk.setCardId(segchkServiceOrderChkTestResp.getCardId()); segchkSelfServiceChk.setCardId(segchkServiceOrderChkTestResp.getCardId());
segchkSelfServiceChk.setProviderId(segchkServiceOrderChkTestResp.getProviderId()); segchkSelfServiceChk.setProviderId(segchkServiceOrderChkTestResp.getProviderId());
segchkSelfServiceChk.setStoreId(segchkServiceOrderChkTestResp.getStoreId()); segchkSelfServiceChk.setStoreId(tmpStoreId);
segchkSelfServiceChk.setUserId(segchkServiceOrderChkTestResp.getUserId()); segchkSelfServiceChk.setUserId(segchkServiceOrderChkTestResp.getUserId());
ret += segchkSelfServiceChkMapper.insertSegchkSelfServiceChk(segchkSelfServiceChk); ret += segchkSelfServiceChkMapper.insertSegchkSelfServiceChk(segchkSelfServiceChk);
System.out.println(ret); logger.debug("OrderCheckTransaction save({}) service-check with ({})"
, (ret == 2 ? "successed" : "failed")
, segchkSelfServiceChk.toString());
} }
SegchkUserLikego segchkUserLikego = new SegchkUserLikego(); SegchkUserLikego segchkUserLikego = new SegchkUserLikego();
segchkUserLikego.setLikegoId(likegoId); segchkUserLikego.setLikegoId(likegoId);
segchkUserLikego.setMgtState(2); segchkUserLikego.setMgtState(2);
logger.debug("OrderCheckTransaction will update likego");
ret += segchkUserLikegoMapper.updateSegchkUserLikego(segchkUserLikego); ret += segchkUserLikegoMapper.updateSegchkUserLikego(segchkUserLikego);
System.out.println(ret); logger.debug("OrderCheckTransaction update({}) likego({})"
, (ret == 3 ? "successed" : "failed")
, likegoId);
return ret; return ret;
} }
@ -386,84 +422,132 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
int updaterest = segchkUserChargeMapper.updateSegchkUserChargeByRet(segchkUserCharge); int updaterest = segchkUserChargeMapper.updateSegchkUserChargeByRet(segchkUserCharge);
logger.warn("chargeRet update with {} result: {}", "success", updaterest == 1 ? "successed" : "failed"); logger.warn("chargeRet update with {} result: {}", "success", updaterest == 1 ? "successed" : "failed");
// 计算返利.给用户或商户,运营商加余额 Map<String, Object> params = new HashMap<>();
SegchkChargeReward segchkChargeReward = segchkUserIndexMapper.selectSegchkRewardInfo(segchkUserCharge1); params.put("chargeId", segchkUserCharge1.getChargeId());
params.put("userId", segchkUserCharge1.getUserId());
if(ObjectUtils.isEmpty(segchkChargeReward.getUserRecommenders()) || ObjectUtils.isEmpty(segchkChargeReward.getRecommendersLevel())){ params.put("providerId", segchkUserCharge1.getProviderId());
// 推荐人是平台 params.put("cardTypeId", segchkUserCharge1.getCardTypeId());
logger.warn("chargeRet charge({}) reward is will belong to platform", chargeId); params.put("cardId", segchkChargeRet.getCardId());
} updaterest = makeChargeReward(params);
/*else if(segchkChargeReward.getRecommendersLevel() == 0){
}*/
else if(segchkChargeReward.getRecommendersLevel() == 1 && !ObjectUtils.isEmpty(segchkChargeReward.getReward()) && segchkChargeReward.getReward().compareTo(new BigDecimal(0.0)) > 0){
logger.debug("chargeRet make reward with --- \n{}", segchkChargeReward.toString());
// 如果推荐是商户。则给商户累加奖励
SegchkStoreReward segchkStoreReward = new SegchkStoreReward();
segchkStoreReward.setProviderId(segchkUserCharge1.getProviderId());
segchkStoreReward.setReward(segchkChargeReward.getReward());
segchkStoreReward.setRewardCardId(segchkChargeRet.getCardId());
segchkStoreReward.setRewardCardTypeId(segchkUserCharge1.getCardTypeId());
segchkStoreReward.setStoreId(segchkChargeReward.getUserRecommenders());
int i = segchkStoreRewardService.insertSegchkStoreReward(segchkStoreReward);
if(i > 0 ){
logger.debug("chargeRet save reward success with chargeId({})--- {}", chargeId, segchkStoreReward.toString());
}
else{
logger.warn("chargeRet save reward failed with chargeId({}) --- {}", chargeId, segchkStoreReward.toString());
}
segchkChargeReward.setChargeId(Long.valueOf(chargeId));
segchkChargeReward.setRewardId(segchkStoreReward.getRewardId());
// 形成商户余额
i = segchkStoreIndexService.addAccountByReward(segchkChargeReward);
if(i > 0){
logger.debug("chargeRet add account successed for --- {}", segchkChargeReward.toString());
}
else {
logger.warn("chargeRet add account failed for --- {}", segchkChargeReward.toString());
}
}
else if(segchkChargeReward.getRecommendersLevel() == 2 && !ObjectUtils.isEmpty(segchkChargeReward.getReward()) && segchkChargeReward.getReward().compareTo(new BigDecimal(0.0)) > 0){
logger.debug("chargeRet make reward with --- \n{}", segchkChargeReward.toString());
// 如果推荐是用户。则给用户累加奖励
SegchkUserReward segchkUserReward = new SegchkUserReward();
segchkUserReward.setProviderId(segchkUserCharge1.getProviderId());
segchkUserReward.setReward(segchkChargeReward.getReward());
segchkUserReward.setRewardCardId(segchkChargeRet.getCardId());
segchkUserReward.setRewardCardTypeId(segchkUserCharge1.getCardTypeId());
segchkUserReward.setUserId(segchkChargeReward.getUserRecommenders());
int i = segchkUserRewardService.insertSegchkUserReward(segchkUserReward);
if(i > 0 ){
logger.debug("chargeRet save reward success with chargeId({})--- {}", chargeId, segchkUserReward.toString());
}
else{
logger.warn("chargeRet save reward failed with chargeId({}) --- {}", chargeId, segchkUserReward.toString());
}
segchkChargeReward.setChargeId(Long.valueOf(chargeId));
segchkChargeReward.setRewardId(segchkUserReward.getRewardId());
// 形成商户余额
i = segchkUserIndexMapper.addAccountByReward(segchkChargeReward);
if(i > 0){
logger.debug("chargeRet add account successed for --- {}", segchkChargeReward.toString());
}
else {
logger.warn("chargeRet add account failed for --- {}", segchkChargeReward.toString());
}
}
} }
else{ else{
logger.warn("chargeRet with: {}---{}, 充值失败!!!", chargeId.toString(), ret); logger.warn("chargeRet with: {}---{}, 充值失败!!!", chargeId.toString(), ret);
SegchkUserCharge segchkUserCharge = new SegchkUserCharge(); SegchkUserCharge segchkUserCharge = new SegchkUserCharge();
segchkUserCharge.setChargeId(Long.parseLong(chargeId)); segchkUserCharge.setChargeId(Long.parseLong(chargeId));
segchkUserCharge.setRetFlag(2); segchkUserCharge.setRetFlag(-1);
int updaterest = segchkUserChargeMapper.updateSegchkUserCharge(segchkUserCharge); int updaterest = segchkUserChargeMapper.updateSegchkUserCharge(segchkUserCharge);
int deleterest = segchkIndexUserAccountMapper.deleteSegchkUserAccountByCharge(segchkUserCharge); int deleterest = segchkIndexUserAccountMapper.deleteSegchkUserAccountByCharge(segchkUserCharge);
logger.warn("chargeRet update with {} result: {}", "failed", deleterest == 1 ? "successed" : "failed"); logger.warn("chargeRet update with {} result: {}", "failed", deleterest == 1 ? "successed" : "failed");
} }
} }
@Override
public int makeChargeReward(Map<String, Object> params) {
logger.debug("makeChargeReward with --- ({})", JSON.toJSONString(params));
int ret = 0;
// 计算返利.给用户或商户,运营商加余额
SegchkChargeReward segchkChargeReward = segchkUserIndexMapper.selectSegchkRewardInfoForCharge(params);
segchkChargeReward.setCardId((Long) params.get("cardId"));
segchkChargeReward.setChargeId((Long) params.get("chargeId"));
if(ObjectUtils.isEmpty(segchkChargeReward.getUserRecommenders()) || ObjectUtils.isEmpty(segchkChargeReward.getRecommendersLevel())){
// 推荐人是平台
logger.warn("chargeRet charge({}) reward is will belong to platform", params.get("chargeId"));
}
/*else if(segchkChargeReward.getRecommendersLevel() == 0){
}*/
else{
switch (segchkChargeReward.getRecommendersLevel()){
case 0: {
// return makeProviderReward(segchkChargeReward, params);
return 0;
}
case 1: {
return makeStoreReward(segchkChargeReward);
}
case 2: {
return makeUserReward(segchkChargeReward);
}
default: return 0;
}
}
return ret;
}
private int makeUserReward(SegchkChargeReward segchkChargeReward) {
logger.debug("makeUserReward with ({})", segchkChargeReward.toString());
int ret = 0;
if(ObjectUtils.isEmpty(segchkChargeReward.getReward()) || segchkChargeReward.getReward().compareTo(new BigDecimal(0.0)) <= 0){
logger.debug("makeUserReward reword is null or 0.0");
return 1;
}
// 如果推荐是用户。则给用户累加奖励
SegchkUserReward segchkUserReward = new SegchkUserReward();
segchkUserReward.setProviderId(segchkChargeReward.getProviderId());
segchkUserReward.setReward(segchkChargeReward.getReward());
segchkUserReward.setRewardCardId(segchkChargeReward.getCardId());
segchkUserReward.setRewardCardTypeId(Long.valueOf(segchkChargeReward.getCardTypeId()));
segchkUserReward.setUserId(segchkChargeReward.getUserRecommenders());
ret = segchkUserRewardService.insertSegchkUserReward(segchkUserReward);
if(ret > 0 ){
logger.debug("makeUserReward save reward success with chargeId({})--- {}", segchkChargeReward.getChargeId(), segchkUserReward.toString());
}
else{
logger.warn("makeUserReward save reward failed with chargeId({}) --- {}", segchkChargeReward.getChargeId(), segchkUserReward.toString());
}
segchkChargeReward.setChargeId(segchkChargeReward.getChargeId());
segchkChargeReward.setRewardId(segchkUserReward.getRewardId());
// 形成商户余额
ret = segchkUserIndexMapper.addAccountByReward(segchkChargeReward);
if(ret > 0){
logger.debug("makeUserReward add account successed for --- {}", segchkChargeReward.toString());
}
else {
logger.warn("makeUserReward add account failed for --- {}", segchkChargeReward.toString());
}
return ret;
}
private int makeStoreReward(SegchkChargeReward segchkChargeReward) {
logger.debug("makeStoreReward with ({})", segchkChargeReward.toString());
int ret = 0;
if(ObjectUtils.isEmpty(segchkChargeReward.getReward()) || segchkChargeReward.getReward().compareTo(new BigDecimal(0.0)) <= 0){
logger.debug("makeStoreReward reword is null or 0.0");
return 1;
}
// 如果推荐是商户。则给商户累加奖励
SegchkStoreReward segchkStoreReward = new SegchkStoreReward();
segchkStoreReward.setProviderId(segchkChargeReward.getProviderId());
segchkStoreReward.setReward(segchkChargeReward.getReward());
segchkStoreReward.setRewardCardId(segchkChargeReward.getCardId());
segchkStoreReward.setRewardCardTypeId(Long.valueOf(segchkChargeReward.getCardTypeId()));
segchkStoreReward.setStoreId(segchkChargeReward.getUserRecommenders());
ret = segchkStoreRewardService.insertSegchkStoreReward(segchkStoreReward);
if(ret > 0 ){
logger.debug("makeStoreReward save reward success with chargeId({})--- {}", segchkChargeReward.getChargeId(), segchkStoreReward.toString());
}
else{
logger.warn("makeStoreReward save reward failed with chargeId({}) --- {}", segchkChargeReward.getChargeId(), segchkStoreReward.toString());
}
segchkChargeReward.setChargeId(segchkChargeReward.getChargeId());
segchkChargeReward.setRewardId(segchkStoreReward.getRewardId());
// 形成商户余额
ret = segchkStoreIndexService.addAccountByReward(segchkChargeReward);
if(ret > 0){
logger.debug("chargeRet add account successed for --- {}", segchkChargeReward.toString());
}
else {
logger.warn("chargeRet add account failed for --- {}", segchkChargeReward.toString());
}
return ret;
}
private int makeProviderReward(SegchkChargeReward segchkChargeReward, Map<String, Object> params) {
return 0;
}
/** /**
* idid * idid
* *
@ -583,6 +667,7 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
SegchkServiceChk segchkServiceChk = new SegchkServiceChk(); SegchkServiceChk segchkServiceChk = new SegchkServiceChk();
segchkServiceChk.setCommentId(segchkServiceCommentUserReq.getCommentId()); segchkServiceChk.setCommentId(segchkServiceCommentUserReq.getCommentId());
segchkServiceChk.setChkServiceId(segchkServiceCommentUserReq.getChkServiceId()); segchkServiceChk.setChkServiceId(segchkServiceCommentUserReq.getChkServiceId());
ret += segchkStoreIndexService.addCommentAccByComment(segchkServiceCommentUserReq.getCommentId());
ret += segchkServiceChkMapper.updateSegchkServiceChk(segchkServiceChk); ret += segchkServiceChkMapper.updateSegchkServiceChk(segchkServiceChk);
return ret; return ret;
} }
@ -722,6 +807,15 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
@Override @Override
public int updateWeChatInfoByUserId(SegchkUserWechat segchkUserWechat, String userLevel) { public int updateWeChatInfoByUserId(SegchkUserWechat segchkUserWechat, String userLevel) {
logger.debug("updateWeChatInfoByUserId with: {}---{}", segchkUserWechat.toString(), userLevel); logger.debug("updateWeChatInfoByUserId with: {}---{}", segchkUserWechat.toString(), userLevel);
if(!ObjectUtils.isEmpty(segchkUserWechat.getNickName())) {
// 如果用户昵称不空则对昵称进行utf转换避免用户昵称特殊字符无法存入
try {
segchkUserWechat.setNickName(URLEncoder.encode(segchkUserWechat.getNickName(), "utf-8"));
} catch (UnsupportedEncodingException e) {
logger.error("updateWeChatInfoByUserId get nickName error: {}", e.getMessage());
e.printStackTrace();
}
}
switch (userLevel){ switch (userLevel){
case "0": return segchkUserIndexMapper.updateSegchkProviderWechat(segchkUserWechat); case "0": return segchkUserIndexMapper.updateSegchkProviderWechat(segchkUserWechat);
case "1": return segchkUserIndexMapper.updateSegchkStoreWechat(segchkUserWechat); case "1": return segchkUserIndexMapper.updateSegchkStoreWechat(segchkUserWechat);

View File

@ -47,7 +47,7 @@ public class AesUtils {
public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException { public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {
try { try {
// java是没有 // java是没有
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
Key sKeySpec = new SecretKeySpec(keyByte, "AES"); Key sKeySpec = new SecretKeySpec(keyByte, "AES");
cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化 cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化

View File

@ -3,6 +3,7 @@ package com.ruoyi.util;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
/** /**
@ -34,7 +35,7 @@ public class WeChatAppletLoginResponse {
* *
*/ */
@JSONField(name = "errcode") @JSONField(name = "errcode")
private String errcode; private Integer errcode;
/** /**
* *
@ -61,7 +62,7 @@ public class WeChatAppletLoginResponse {
*/ */
@JsonIgnore @JsonIgnore
public boolean isError() { public boolean isError() {
return !StringUtils.isEmpty(this.errcode); return this.errcode != null && this.errcode != 0 ;
} }
/** /**
@ -69,7 +70,7 @@ public class WeChatAppletLoginResponse {
*/ */
@JsonIgnore @JsonIgnore
public String errCodeDesc() { public String errCodeDesc() {
switch (Integer.valueOf(this.errcode)){ switch (this.errcode){
case -1: return "系统繁忙,此时请开发者稍候再试"; case -1: return "系统繁忙,此时请开发者稍候再试";
case 0: return "请求成功"; case 0: return "请求成功";
case 40029: return "code 无效"; case 40029: return "code 无效";
@ -113,11 +114,11 @@ public class WeChatAppletLoginResponse {
this.unionid = unionid; this.unionid = unionid;
} }
public String getErrcode() { public Integer getErrcode() {
return errcode; return errcode;
} }
public void setErrcode(String errcode) { public void setErrcode(Integer errcode) {
this.errcode = errcode; this.errcode = errcode;
} }

View File

@ -6,7 +6,10 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.util.WeChatAppletLoginResponse; import com.ruoyi.util.WeChatAppletLoginResponse;
import com.ruoyi.util.WeChatAppletUserInfo; import com.ruoyi.util.WeChatAppletUserInfo;
import com.ruoyi.util.WechatSetting; import com.ruoyi.util.WechatSetting;
import com.ruoyi.util.bean.SegUserProfile;
import com.ruoyi.util.bean.UserInfoProfile;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
@ -27,6 +30,7 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Arrays;
import java.util.Objects; import java.util.Objects;
/** /**
@ -70,24 +74,68 @@ public class WeChatAppletUtils {
*/ */
public static WeChatAppletLoginResponse getLoginInfo(String code, WechatSetting wechatSetting) { public static WeChatAppletLoginResponse getLoginInfo(String code, WechatSetting wechatSetting) {
logger.debug("getLoginInfo and code:{} \r\n wechatSetting:{}", code, wechatSetting); logger.debug("getLoginInfo and code:{} \r\n wechatSetting:{}", code, wechatSetting);
WeChatAppletLoginResponse weChatAppletLoginResponse = wechatSetting.getType() == 999999 /*WeChatAppletLoginResponse weChatAppletLoginResponse = wechatSetting.getType() == 999999
? new WeChatAppletLoginResponse(code, code, code) ? new WeChatAppletLoginResponse(code, code, code)
: JSON.parseObject(WechatUtils.executeHttpGet(String.format(GET_LOGIN_INFO_URL, wechatSetting.getAppId(), wechatSetting.getAppSecret(), code)), WeChatAppletLoginResponse.class); : JSON.parseObject(WechatUtils.executeHttpGet(String.format(GET_LOGIN_INFO_URL, wechatSetting.getAppId(), wechatSetting.getAppSecret(), code)), WeChatAppletLoginResponse.class);*/
// WeChatAppletLoginResponse weChatAppletLoginResponse = null; // WeChatAppletLoginResponse weChatAppletLoginResponse = null;
// JSONObject jsonObject = JSON.parseObject(WechatUtils.executeHttpGet(String.format(GET_LOGIN_INFO_URL, wechatSetting.getAppId(), wechatSetting.getAppSecret(), code))); String s = WechatUtils.executeHttpGet(String.format(GET_LOGIN_INFO_URL, wechatSetting.getAppId(), wechatSetting.getAppSecret(), code));
logger.warn("getLoginInfo get WeChatAppletLoginResponse: {}", weChatAppletLoginResponse.toString()); logger.warn("getLoginInfo res: ({})", s);
WeChatAppletLoginResponse weChatAppletLoginResponse = JSONObject.parseObject(s, WeChatAppletLoginResponse.class);
// logger.warn("getLoginInfo get WeChatAppletLoginResponse: {}", weChatAppletLoginResponse.toString());
if (Objects.isNull(weChatAppletLoginResponse)) { if (Objects.isNull(weChatAppletLoginResponse)) {
logger.error("getLoginInfo fail : weChatAppletLoginResponse is null"); logger.error("getLoginInfo fail : weChatAppletLoginResponse is null");
return null; return null;
} }
if (weChatAppletLoginResponse.isError()) { if (weChatAppletLoginResponse.isError()) {
logger.debug("getLoginInfo fail and errorMsg:({}) errCode:({}) desc:({})", weChatAppletLoginResponse.getErrmsg(), weChatAppletLoginResponse.getErrcode(), weChatAppletLoginResponse.errCodeDesc()); logger.debug("getLoginInfo fail and errorMsg:({}) errCode:({})", weChatAppletLoginResponse.getErrmsg(), weChatAppletLoginResponse.getErrcode());
return null; return null;
} }
logger.debug("getLoginInfo get user wechat info: {}", weChatAppletLoginResponse.toString()); logger.debug("getLoginInfo get user wechat info: {}", weChatAppletLoginResponse.toString());
return weChatAppletLoginResponse; return weChatAppletLoginResponse;
} }
/**
* UserProfile
*
* @param sessionKey
* @param segUserProfile
* @return unionId
*/
public static String getUserInfoFromUserProfile(String sessionKey, SegUserProfile segUserProfile) {
logger.debug("getUserInfoFromUserProfile and sessionKey:{} \r\n weChatAppletUserInfo:{}", sessionKey, segUserProfile);
String unionId = null;
if (Objects.isNull(segUserProfile)) {
logger.error("getUserInfoFromUserProfile fail:weChatAppletUserInfo is null ");
return null;
}
// 被加密的数据
byte[] dataByte = Base64.decodeBase64(segUserProfile.getEncryptedData());
// 加密秘钥
byte[] aeskey = Base64.decodeBase64(sessionKey);
// 偏移量
byte[] ivByte = Base64.decodeBase64(segUserProfile.getIv());
try {
/*int base = 16;
if (aeskey.length % base != 0) {
int groups = aeskey.length / base + (aeskey.length % base != 0 ? 1 : 0);
byte[] temp = new byte[groups * base];
Arrays.fill(temp, (byte) 0);
System.arraycopy(aeskey, 0, temp, 0, aeskey.length);
aeskey = temp;
}*/
byte[] resultByte = AesUtils.getInstance().decrypt(dataByte, aeskey, ivByte);
if (!ObjectUtils.isEmpty(resultByte)) {
String result = new String(resultByte, "UTF-8");
return JSONObject.parseObject(result).toJSONString();
}
return null;
} catch (Exception e) {
e.printStackTrace();
}
return unionId;
}
/** /**
* unionId * unionId
* *

View File

@ -0,0 +1,107 @@
package com.ruoyi.util.bean;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.springframework.util.StringUtils;
/**
*
*/
public class SegUserProfile {
/**
*
*/
@JSONField(name = "userInfo")
private String userInfo;
/**
*
*/
@JSONField(name = "rawData")
private String rawData;
/**
* 使 sha1( rawData + sessionkey )
*/
@JSONField(name = "signature")
private String signature;
/**
*
*/
@JSONField(name = "encryptedData")
private String encryptedData;
/**
*
*/
@JSONField(name = "iv")
private String iv;
/**
* ID
*/
@JSONField(name = "cloudID")
private String cloudID;
public String getUserInfo() {
return userInfo;
}
public void setUserInfo(String userInfo) {
this.userInfo = userInfo;
}
public String getRawData() {
return rawData;
}
public void setRawData(String rawData) {
this.rawData = rawData;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public String getEncryptedData() {
return encryptedData;
}
public void setEncryptedData(String encryptedData) {
this.encryptedData = encryptedData;
}
public String getIv() {
return iv;
}
public void setIv(String iv) {
this.iv = iv;
}
public String getCloudID() {
return cloudID;
}
public void setCloudID(String cloudID) {
this.cloudID = cloudID;
}
@Override
public String toString() {
return "SegUserProfile{" +
"userInfo='" + userInfo + '\'' +
", rawData='" + rawData + '\'' +
", signature='" + signature + '\'' +
", encryptedData='" + encryptedData + '\'' +
", iv='" + iv + '\'' +
", cloudID='" + cloudID + '\'' +
'}';
}
}

View File

@ -0,0 +1,120 @@
package com.ruoyi.util.bean;
import com.alibaba.fastjson.annotation.JSONField;
/**
*
*/
public class UserInfoProfile {
/**
*
*/
@JSONField(name = "nickName")
private String nickName;
/**
* URL
*/
@JSONField(name = "avatarUrl")
private String avatarUrl;
/**
*
*/
@JSONField(name = "gender")
private String gender;
/**
*
*/
@JSONField(name = "country")
private String country;
/**
*
*/
@JSONField(name = "province")
private String province;
/**
*
*/
@JSONField(name = "city")
private String city;
/**
*
*/
@JSONField(name = "language")
private String language;
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getAvatarUrl() {
return avatarUrl;
}
public void setAvatarUrl(String avatarUrl) {
this.avatarUrl = avatarUrl;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
@Override
public String toString() {
return "UserInfoProfile{" +
"nickName='" + nickName + '\'' +
", avatarUrl='" + avatarUrl + '\'' +
", gender='" + gender + '\'' +
", country='" + country + '\'' +
", province='" + province + '\'' +
", city='" + city + '\'' +
", language='" + language + '\'' +
'}';
}
}

View File

@ -157,7 +157,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSegchkStoreSaleList" parameterType="SegchkServiceAndSaleWebReq" resultMap="SegchkServiceAndSaleWebRespResult"> <select id="selectSegchkStoreSaleList" parameterType="SegchkServiceAndSaleWebReq" resultMap="SegchkServiceAndSaleWebRespResult">
select date_format( mod_time, '%Y%m' ) as static_month select date_format( mod_time, '%Y%m' ) as static_month
, date_format(any_value(mod_time), '%Y-%m-01') as query_mon , date_format(any_value(mod_time), '%Y-%m-01') as query_mon
, count(1) as static_count from segchk_user_charge where provider_id = #{providerId} and ret_flag = 1 and mod_time <![CDATA[ >= ]]> NOW() - interval , count(1) as static_count from segchk_user_charge where provider_id = #{providerId} and ret_flag <![CDATA[ >= ]]> 1 and mod_time <![CDATA[ >= ]]> NOW() - interval
<choose> <choose>
<when test="staticMonth == null">3</when> <when test="staticMonth == null">3</when>
<when test="staticMonth == 0">3</when> <when test="staticMonth == 0">3</when>
@ -170,7 +170,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, charge.charge_count as static_count , charge.charge_count as static_count
, ifnull(cardmgt.card_type_name, '未知卡') as card_name , ifnull(cardmgt.card_type_name, '未知卡') as card_name
from from
(select store_id, card_type_id, provider_id, count(1) as charge_count from segchk_user_charge where provider_id = #{providerId} and ret_flag = 1 and date_format(mod_time, '%Y%m') = date_format(#{staticMonth}, '%Y%m') group by provider_id, card_type_id, store_id) charge (select store_id, card_type_id, provider_id, count(1) as charge_count from segchk_user_charge where provider_id = #{providerId} and ret_flag <![CDATA[ >= ]]> 1 and date_format(mod_time, '%Y%m') = date_format(#{staticMonth}, '%Y%m') group by provider_id, card_type_id, store_id) charge
left join left join
(select provider_id, card_type_id, card_type_name from segchk_charge_card where provider_id = #{providerId}) cardmgt on cardmgt.provider_id = charge.provider_id and cardmgt.card_type_id = charge.card_type_id (select provider_id, card_type_id, card_type_name from segchk_charge_card where provider_id = #{providerId}) cardmgt on cardmgt.provider_id = charge.provider_id and cardmgt.card_type_id = charge.card_type_id
left join left join

View File

@ -157,6 +157,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
) ssa ) ssa
on ssa.store_id = suc.store_id on ssa.store_id = suc.store_id
</insert> </insert>
<insert id="addCommentAccByComment">
insert into segchk_comment_acc (
star_count
, star_level
, store_id
, provider_id
, mod_time
, comment_id)
select
if(isnull(sca.star_count), ssc.cnt, ssc.cnt + sca.star_count) as star_count
, if(isnull(sca.star_level), ssc.star_level, ssc.star_level + sca.star_level) as start_level
, ssc.store_id
, ssc.provider_id
, now()
, ssc.comment_id from
(select provider_id, store_id, comment_id, 1 as cnt, star_level from segchk_service_comment where comment_id = #{commentId}) ssc
left join
(select provider_id, store_id, star_count, star_level from segchk_comment_acc where store_id = (select store_id from segchk_service_comment where comment_id = #{commentId}) order by update_id limit 1) sca
on sca.provider_id = ssc.provider_id and sca.store_id = ssc.store_id
</insert>
<select id="selectSegchkStoreList" parameterType="SegchkStoreWebReq" resultMap="SegchkStoreIndexWebRespResult"> <select id="selectSegchkStoreList" parameterType="SegchkStoreWebReq" resultMap="SegchkStoreIndexWebRespResult">
select select
@ -616,7 +636,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSegchkStoreSaleList" parameterType="SegchkServiceAndSaleWebReq" resultMap="SegchkServiceAndSaleWebRespResult"> <select id="selectSegchkStoreSaleList" parameterType="SegchkServiceAndSaleWebReq" resultMap="SegchkServiceAndSaleWebRespResult">
select date_format( mod_time, '%Y%m' ) as static_month select date_format( mod_time, '%Y%m' ) as static_month
, date_format(any_value(mod_time), '%Y-%m-01') as query_mon , date_format(any_value(mod_time), '%Y-%m-01') as query_mon
, count(1) as static_count from segchk_user_charge where provider_id = #{providerId} and store_id = #{storeId} and ret_flag = 1 and mod_time <![CDATA[ >= ]]> NOW() - interval , count(1) as static_count from segchk_user_charge where provider_id = #{providerId} and store_id = #{storeId} and ret_flag <![CDATA[ >= ]]> 1 and mod_time <![CDATA[ >= ]]> NOW() - interval
<choose> <choose>
<when test="staticMonth != null and staticMonth != ''">#{staticMonth} - 1</when> <when test="staticMonth != null and staticMonth != ''">#{staticMonth} - 1</when>
<otherwise>12 - 1</otherwise> <otherwise>12 - 1</otherwise>
@ -626,7 +646,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSegchkStoreSaleDetails" parameterType="SegchkServiceAndSaleWebReq" resultMap="SegchkServiceAndSaleDetailWebRespResult"> <select id="selectSegchkStoreSaleDetails" parameterType="SegchkServiceAndSaleWebReq" resultMap="SegchkServiceAndSaleDetailWebRespResult">
select charge.mod_time, charge.card_id, ifnull(cardmgt.card_type_name, '未知卡') as card_name from select charge.mod_time, charge.card_id, ifnull(cardmgt.card_type_name, '未知卡') as card_name from
(select store_id, card_id, card_type_id, provider_id, mod_time from segchk_user_charge where provider_id = #{providerId} and store_id = #{storeId} and ret_flag = 1 and date_format(mod_time, '%Y%m') = date_format(#{staticMonth}, '%Y%m') order by mod_time desc) charge (select store_id, card_id, card_type_id, provider_id, mod_time from segchk_user_charge where provider_id = #{providerId} and store_id = #{storeId} and ret_flag <![CDATA[ >= ]]> 1 and date_format(mod_time, '%Y%m') = date_format(#{staticMonth}, '%Y%m') order by mod_time desc) charge
left join left join
(select provider_id, card_type_id, card_type_name from segchk_charge_card where provider_id = #{providerId}) cardmgt on cardmgt.provider_id = charge.provider_id and cardmgt.card_type_id = charge.card_type_id (select provider_id, card_type_id, card_type_name from segchk_charge_card where provider_id = #{providerId}) cardmgt on cardmgt.provider_id = charge.provider_id and cardmgt.card_type_id = charge.card_type_id
order by mod_time desc order by mod_time desc

View File

@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="cardStatus" column="card_status"/> <result property="cardStatus" column="card_status"/>
<result property="cardContent" column="card_content"/> <result property="cardContent" column="card_content"/>
<result property="bgUrl" column="bg_url"/> <result property="bgUrl" column="bg_url"/>
<result property="contentColor" column="content_color"/>
</resultMap> </resultMap>
<resultMap type="SegchkUserCollectWebResp" id="SegchkUserCollectWebRespResult"> <resultMap type="SegchkUserCollectWebResp" id="SegchkUserCollectWebRespResult">
@ -190,6 +191,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="recommendersLevel" column="recommenders_level"/> <result property="recommendersLevel" column="recommenders_level"/>
<result property="totalChargeCount" column="total_charge_count"/> <result property="totalChargeCount" column="total_charge_count"/>
<result property="reward" column="reward"/> <result property="reward" column="reward"/>
<result property="cardId" column="card_id"/>
<result property="useCount" column="use_count"/>
<result property="chkCount" column="chk_count"/>
<result property="chargeId" column="charge_id"/>
</resultMap> </resultMap>
<select id="selectSegchkUserWebInfo" parameterType="SegchkUserWebReq" resultMap="SegchkUserWebRespResult"> <select id="selectSegchkUserWebInfo" parameterType="SegchkUserWebReq" resultMap="SegchkUserWebRespResult">
@ -275,7 +280,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by mod_time desc order by mod_time desc
</select> </select>
<select id="selectUserCardList" parameterType="SegchkUserWebReq" resultMap="SegchkUserWebCardRespResult">card_content <select id="selectUserCardList" parameterType="SegchkUserWebReq" resultMap="SegchkUserWebCardRespResult">
select select
card.effective_time card.effective_time
, card.use_count , card.use_count
@ -283,7 +288,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, provcard.card_type_name , provcard.card_type_name
, 0 as type_flag , 0 as type_flag
, case when to_days(card.effective_time) <![CDATA[ < ]]> to_days( current_date()) then '过期' else case when status != 0 then '无效' else '可用' end end as card_status , case when to_days(card.effective_time) <![CDATA[ < ]]> to_days( current_date()) then '过期' else case when status != 0 then '无效' else '可用' end end as card_status
, sci.img_url as bg_url , ifnull(sci.img_url, '/img/experiencecard.png') as bg_url
, ifnull(sci.content_color, '000000') as content_color
from from
(select card_id, card_type_id, user_id, provider_id, mod_time, effective_time, use_count, left_count, status from segchk_user_vip where provider_id = #{providerId} and user_id = #{userId} and status = 0) card (select card_id, card_type_id, user_id, provider_id, mod_time, effective_time, use_count, left_count, status from segchk_user_vip where provider_id = #{providerId} and user_id = #{userId} and status = 0) card
left join left join
@ -306,7 +312,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, left_count , left_count
, 1 as type_flag , 1 as type_flag
, card_status , card_status
, sci.img_url as bg_url , ifnull(sci.img_url, '/img/storeself.png') as bg_url
, ifnull(sci.content_color, '764e11') as content_color
, card_content , card_content
from from
(select (select
@ -315,16 +322,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, provider_id , provider_id
, free_content as card_content , free_content as card_content
, left_count , left_count
, if(type_id = 2, free_name, '本店专享') as card_type_name , if(type_id = 2, free_name, '本店尊享') as card_type_name
, if(date_sub(current_date, interval 0 day )) <![CDATA[ > ]]> to_days(mod_time), '过期', '可用') as card_status , if(to_days(current_date) <![CDATA[ > ]]> to_days(mod_time), '过期', '可用') as card_status
<!-- , case when type_id = 2 then case when to_days(date_sub(current_date, interval 30 day )) <![CDATA[ > ]]> to_days(mod_time) then '过期' else '可用' end else case when to_days(date_sub(current_date, interval 60 day )) <![CDATA[ > ]]> to_days(mod_time) then '过期' else '可用' end end as card_status-->
, type_id , type_id
, lable_id
from segchk_store_self_mgt where provider_id = #{providerId} and user_id = #{userId} and left_count <![CDATA[ > ]]> 0 and status = 0) pserformance from segchk_store_self_mgt where provider_id = #{providerId} and user_id = #{userId} and left_count <![CDATA[ > ]]> 0 and status = 0) pserformance
left join left join
(select provider_id, store_id, store_name from segchk_store_basic_info where provider_id = #{providerId}) store on store.provider_id = pserformance.provider_id and store.store_id = pserformance.store_id (select provider_id, store_id, store_name from segchk_store_basic_info where provider_id = #{providerId}) store on store.provider_id = pserformance.provider_id and store.store_id = pserformance.store_id
left join left join
<!-- 关联卡的卡片id--> <!-- 关联卡的卡片id-->
(select * from segchk_card_img_ctl where provider_id = #{providerId} and type_id <![CDATA[ != ]]> 0 and lable_id = 0) scic on pserformance.card_type_id = scic.lable_id and pserformance.type_id = scic.type_id (select * from segchk_card_img_ctl where provider_id = #{providerId} and type_id <![CDATA[ != ]]> 0) scic on pserformance.lable_id = scic.lable_id and pserformance.type_id = scic.type_id
left join left join
(select * from segchk_card_img where provider_id = #{providerId}) sci on scic.img_id = sci.id (select * from segchk_card_img where provider_id = #{providerId}) sci on scic.img_id = sci.id
order by effective_time desc; order by effective_time desc;
@ -542,6 +549,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, if(isnull(sssm.free_name), suv.status, sssm.status) as card_status , if(isnull(sssm.free_name), suv.status, sssm.status) as card_status
, if(isnull(sssm2.free_card_id), 0, 1) as can_free , if(isnull(sssm2.free_card_id), 0, 1) as can_free
, if(isnull(sssm2.free_card_id), sslm.lable_id, null) as lable_id , if(isnull(sssm2.free_card_id), sslm.lable_id, null) as lable_id
, if(isnull(sssm2.free_card_id), sslm.type_id, null) as type_id
, if(isnull(sssm2.free_card_id), sslm.preference_name, null) as lable_name , if(isnull(sssm2.free_card_id), sslm.preference_name, null) as lable_name
, if(isnull(sssm2.free_card_id), sslm.store_id, null) as lable_sort , if(isnull(sssm2.free_card_id), sslm.store_id, null) as lable_sort
, if(to_days(suv.effective_time) <![CDATA[ > ]]> to_days(curdate()), 0, 1) as is_expire , if(to_days(suv.effective_time) <![CDATA[ > ]]> to_days(curdate()), 0, 1) as is_expire
@ -599,7 +607,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
on subi.provider_id = scc.provider_id on subi.provider_id = scc.provider_id
left join left join
( (
select provider_id, user_id, card_type_id, count(1) as buycnt from segchk_user_charge where provider_id = #{providerId} and user_id = #{userId} and ret_flag = 1 group by provider_id, user_id, card_type_id select provider_id, user_id, card_type_id, count(1) as buycnt from segchk_user_charge where provider_id = #{providerId} and user_id = #{userId} and ret_flag <![CDATA[ >= ]]> 1 group by provider_id, user_id, card_type_id
) suc ) suc
on suc.provider_id = scc.provider_id and suc.card_type_id = scc.card_type_id on suc.provider_id = scc.provider_id and suc.card_type_id = scc.card_type_id
@ -674,7 +682,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
on c.recomid = x.recommender and c.level = #{recommondLevel} on c.recomid = x.recommender and c.level = #{recommondLevel}
</select> </select>
<select id="selectSegchkRewardInfo" parameterType="SegchkUserCharge" resultMap="SegchkChargeRewardResult"> <select id="selectSegchkRewardInfoForCharge" parameterType="java.util.Map" resultMap="SegchkChargeRewardResult">
select card_type_id select card_type_id
, user_id , user_id
, provider_id , provider_id
@ -723,6 +731,50 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
on succnt.user_id = suc.user_id on succnt.user_id = suc.user_id
) ret ) ret
</select> </select>
<select id="getCardInfo" parameterType="java.util.Map" resultType="java.util.HashMap">
select
suv.card_id as cardId
, suv.card_type_id as cardTypeId
, suv.user_id as userId
, suv.provider_id as providerId
, suv.use_count as useCount
, suc.charge_id as chargeId
, ifnull(ssc.chk_count, 0) as chkCount
from
(select * from segchk_user_vip where card_id = #{cardId}) suv
left join
(select * from segchk_user_charge where card_id = #{cardId} order by charge_id desc limit 1) suc on suv.card_id = suc.card_id
left join
(select count(1) as chk_count, card_id from segchk_service_chk where card_id = #{cardId} and store_id = #{storeId}) ssc on ssc.card_id = suv.card_id
</select>
<select id="selectSegchkRewardInfoForCheck" parameterType="java.util.Map" resultMap="SegchkChargeRewardResult">
select
suv.card_id as card_id
, suv.card_type_id as card_type_id
, suv.user_id as user_id
, suv.provider_id as provider_id
, suv.use_count as use_count
, suc.charge_id as charge_id
, suc.charge_count as total_charge_count
, ifnull(ssc.chk_count, 0) as chk_count
, suei.user_recommenders as user_recommenders
, suei.recommenders_level as recommenders_level
, sscm.card_commission as reward
from
<!-- # 获取会员卡信息-->
(select * from segchk_user_vip where card_id = #{cardId}) suv
left join
<!-- # 获取会员卡对应的充值id,充值必须成功,-->
(select charge_id, user_id, (select count(1) from segchk_user_charge where user_id = #{userId} and ret_flag <![CDATA[ > ]]> 0) as charge_count from segchk_user_charge where card_id = #{cardId} order by charge_id desc limit 1) suc on suv.user_id = suc.user_id
left join
<!-- # 获取该会员卡在该商家的核消次数-->
(select count(1) as chk_count, card_id from segchk_service_chk where card_id = #{cardId} and store_id = #{storeId}) ssc on ssc.card_id = suv.card_id
left join
<!-- # 获取该用户的推荐人-->
(select * from segchk_user_ext_info where user_id = #{userId}) suei on suv.user_id = suei.user_id
left join
(select * from segchk_store_chk_mgt where store_id = #{storeId}) sscm on suv.card_type_id = sscm.card_type_id;
</select>
<insert id="updateSegchkUserWechat" parameterType="SegchkUserWechat"> <insert id="updateSegchkUserWechat" parameterType="SegchkUserWechat">
insert into segchk_user_wechat insert into segchk_user_wechat

View File

@ -37,6 +37,10 @@ public class SegchkCommentAcc extends BaseEntity
@Excel(name = "运营商id全局唯一") @Excel(name = "运营商id全局唯一")
private Long providerId; private Long providerId;
/** 评价id */
@Excel(name = "评价id")
private Long commentId;
/** 创建或修改时间 */ /** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
@ -97,15 +101,24 @@ public class SegchkCommentAcc extends BaseEntity
return modTime; return modTime;
} }
public Long getCommentId() {
return commentId;
}
public void setCommentId(Long commentId) {
this.commentId = commentId;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return "SegchkCommentAcc{" +
.append("updateId", getUpdateId()) "updateId=" + updateId +
.append("starCount", getStarCount()) ", starCount=" + starCount +
.append("starLevel", getStarLevel()) ", starLevel=" + starLevel +
.append("storeId", getStoreId()) ", storeId=" + storeId +
.append("providerId", getProviderId()) ", providerId=" + providerId +
.append("modTime", getModTime()) ", commentId=" + commentId +
.toString(); ", modTime=" + modTime +
'}';
} }
} }

View File

@ -8,7 +8,7 @@ import java.util.Date;
/** /**
* seg segchk_user_basic_info * seg segchk_user_basic_info
* *
* @author yinzhiying * @author yinzhiying
* @date 2021-07-01 * @date 2021-07-01
*/ */
@ -17,6 +17,14 @@ public class SegchkUserWebCardResp extends BaseEntity
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 运营商id */
@Excel(name = "运营商id")
private Long providerId;
/** 商家id */
@Excel(name = "商家id")
private Long storeId;
/** 卡名称 */ /** 卡名称 */
@Excel(name = "卡名称") @Excel(name = "卡名称")
private String cardName; private String cardName;
@ -26,15 +34,6 @@ public class SegchkUserWebCardResp extends BaseEntity
private String storeName; private String storeName;
/** 商家id */
@Excel(name = "商家id")
private String storeId;
/** providerId */
@Excel(name = "providerId")
private String providerId;
/** 使用次数 */ /** 使用次数 */
@Excel(name = "使用次数") @Excel(name = "使用次数")
private Integer useCount; private Integer useCount;
@ -56,6 +55,18 @@ public class SegchkUserWebCardResp extends BaseEntity
@Excel(name = "卡券状态") @Excel(name = "卡券状态")
private String cardStatus; private String cardStatus;
/** 卡券说明 */
@Excel(name = "卡券说明")
private String cardContent;
/** 卡券说明 */
@Excel(name = "卡券说明")
private String bgUrl;
/** 内容色号 */
@Excel(name = "内容色号")
private String contentColor;
public String getCardName() { public String getCardName() {
return cardName; return cardName;
} }
@ -112,25 +123,61 @@ public class SegchkUserWebCardResp extends BaseEntity
this.cardStatus = cardStatus; this.cardStatus = cardStatus;
} }
public String getStoreId() { public String getCardContent() {
return cardContent;
}
public void setCardContent(String cardContent) {
this.cardContent = cardContent;
}
public String getBgUrl() {
return bgUrl;
}
public void setBgUrl(String bgUrl) {
this.bgUrl = bgUrl;
}
public String getContentColor() {
return contentColor;
}
public void setContentColor(String contentColor) {
this.contentColor = contentColor;
}
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return storeId; return storeId;
} }
public void setStoreId(String storeId) { public void setStoreId(Long storeId) {
this.storeId = storeId; this.storeId = storeId;
} }
@Override @Override
public String toString() { public String toString() {
return "SegchkUserWebCardResp{" + return "SegchkUserWebCardResp{" +
"cardName='" + cardName + '\'' + "providerId=" + providerId +
", storeId=" + storeId +
", cardName='" + cardName + '\'' +
", storeName='" + storeName + '\'' + ", storeName='" + storeName + '\'' +
", storeId='" + storeId + '\'' +
", useCount=" + useCount + ", useCount=" + useCount +
", leftCount=" + leftCount + ", leftCount=" + leftCount +
", effectiveTime=" + effectiveTime + ", effectiveTime=" + effectiveTime +
", typeFlag=" + typeFlag + ", typeFlag=" + typeFlag +
", cardStatus='" + cardStatus + '\'' + ", cardStatus='" + cardStatus + '\'' +
", cardContent='" + cardContent + '\'' +
", bgUrl='" + bgUrl + '\'' +
", contentColor='" + contentColor + '\'' +
'}'; '}';
} }
} }

View File

@ -11,10 +11,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="storeId" column="store_id" /> <result property="storeId" column="store_id" />
<result property="providerId" column="provider_id" /> <result property="providerId" column="provider_id" />
<result property="modTime" column="mod_time" /> <result property="modTime" column="mod_time" />
<result property="commentId" column="comment_id" />
</resultMap> </resultMap>
<sql id="selectSegchkCommentAccVo"> <sql id="selectSegchkCommentAccVo">
select update_id, star_count, star_level, store_id, provider_id, mod_time from segchk_comment_acc select update_id, star_count, star_level, store_id, provider_id, mod_time, comment_id from segchk_comment_acc
</sql> </sql>
<select id="selectSegchkCommentAccList" parameterType="SegchkCommentAcc" resultMap="SegchkCommentAccResult"> <select id="selectSegchkCommentAccList" parameterType="SegchkCommentAcc" resultMap="SegchkCommentAccResult">
@ -25,6 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="starLevel != null "> and star_level = #{starLevel}</if> <if test="starLevel != null "> and star_level = #{starLevel}</if>
<if test="storeId != null "> and store_id = #{storeId}</if> <if test="storeId != null "> and store_id = #{storeId}</if>
<if test="providerId != null "> and provider_id = #{providerId}</if> <if test="providerId != null "> and provider_id = #{providerId}</if>
<if test="commentId != null "> and comment_id = #{commentId}</if>
<if test="params.beginModTime != null and params.beginModTime != '' and params.endModTime != null and params.endModTime != ''"> and mod_time between #{params.beginModTime} and #{params.endModTime}</if> <if test="params.beginModTime != null and params.beginModTime != '' and params.endModTime != null and params.endModTime != ''"> and mod_time between #{params.beginModTime} and #{params.endModTime}</if>
</where> </where>
</select> </select>
@ -41,6 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="starLevel != null">star_level,</if> <if test="starLevel != null">star_level,</if>
<if test="storeId != null">store_id,</if> <if test="storeId != null">store_id,</if>
<if test="providerId != null">provider_id,</if> <if test="providerId != null">provider_id,</if>
<if test="commentId != null">comment_id,</if>
mod_time, mod_time,
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
@ -48,6 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="starLevel != null">#{starLevel},</if> <if test="starLevel != null">#{starLevel},</if>
<if test="storeId != null">#{storeId},</if> <if test="storeId != null">#{storeId},</if>
<if test="providerId != null">#{providerId},</if> <if test="providerId != null">#{providerId},</if>
<if test="commentId != null">#{commentId},</if>
<choose> <choose>
<when test="modTime != null">#{modTime},</when> <when test="modTime != null">#{modTime},</when>
<otherwise>now(),</otherwise> <otherwise>now(),</otherwise>
@ -62,6 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="starLevel != null">star_level = #{starLevel},</if> <if test="starLevel != null">star_level = #{starLevel},</if>
<if test="storeId != null">store_id = #{storeId},</if> <if test="storeId != null">store_id = #{storeId},</if>
<if test="providerId != null">provider_id = #{providerId},</if> <if test="providerId != null">provider_id = #{providerId},</if>
<if test="commentId != null ">comment_id = #{commentId}</if>
<choose> <choose>
<when test="modTime != null">mod_time = #{modTime},</when> <when test="modTime != null">mod_time = #{modTime},</when>
<otherwise>mod_time = now(),</otherwise> <otherwise>mod_time = now(),</otherwise>

View File

@ -36,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, left_count , left_count
, status) , status)
select * from ( select suc.card_type_id, suc.user_id, suc.provider_id, now() as mod_time, now() + interval scc.effective_time day as effective_time, 0 as use_count, scc.card_type_chkcount as left_count, 0 as status from select * from ( select suc.card_type_id, suc.user_id, suc.provider_id, now() as mod_time, now() + interval scc.effective_time day as effective_time, 0 as use_count, scc.card_type_chkcount as left_count, 0 as status from
(select user_id, card_type_id, provider_id from segchk_user_charge where charge_id = #{chargeId} and ret_flag = 0) suc (select user_id, card_type_id, provider_id from segchk_user_charge where charge_id = #{chargeId} and `ret_flag` = 0) suc
left join segchk_charge_card scc on suc.provider_id = scc.provider_id and suc.card_type_id = scc.card_type_id) ret left join segchk_charge_card scc on suc.provider_id = scc.provider_id and suc.card_type_id = scc.card_type_id) ret
</insert> </insert>

View File

@ -72,7 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<otherwise>now(),</otherwise> <otherwise>now(),</otherwise>
</choose> </choose>
<choose> <choose>
<when test="retFlag != null and modTime != ''">#{retFlag},</when> <when test="retFlag != null and retFlag != ''">#{retFlag},</when>
<otherwise>0,</otherwise> <otherwise>0,</otherwise>
</choose> </choose>
</trim> </trim>
@ -98,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, uc.card_type_id , uc.card_type_id
, uc.provider_id , uc.provider_id
, now() as mod_time , now() as mod_time
, 0 as ret_flag from , uc.ret_flag from
( (
(select (select
#{userId} as user_id #{userId} as user_id
@ -106,6 +106,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
, #{cardTypeId} as card_type_id , #{cardTypeId} as card_type_id
, #{accountUsed} as account_used , #{accountUsed} as account_used
, #{providerId} as provider_id , #{providerId} as provider_id
<choose>
<when test="retFlag != null and retFlag != ''">, 0</when>
<otherwise>, #{retFlag}</otherwise>
</choose>
as ret_flag
) uc ) uc
left join left join
(select user_id, user_recommenders, recommenders_level, provider_id from segchk_user_ext_info where user_id = #{userId}) suei (select user_id, user_recommenders, recommenders_level, provider_id from segchk_user_ext_info where user_id = #{userId}) suei