diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SegchkTask.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SegchkTask.java similarity index 52% rename from ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SegchkTask.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SegchkTask.java index 97177ad..fc25149 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SegchkTask.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SegchkTask.java @@ -1,8 +1,12 @@ -package com.ruoyi.quartz.task; +package com.ruoyi.web.controller.task; import com.ruoyi.common.utils.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import com.ruoyi.common.utils.http.HttpUtils; + /** * 定时任务调度测试 * @@ -11,18 +15,23 @@ import org.springframework.stereotype.Component; @Component("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)); } - public void ryParams(String params) + public void segchkParams(String params) { System.out.println("执行有参方法:" + params); } - public void ryNoParams() + public void segchkNoParams() { System.out.println("执行无参方法"); } + + public void segchkGetWxAccessToken(){ +// HttpUtils.sendGet(); + } } diff --git a/ruoyi-segchk-web/src/main/java/com/ruoyi/login/SegChkLoginController.java b/ruoyi-segchk-web/src/main/java/com/ruoyi/login/SegChkLoginController.java index 122af2f..13be9d2 100644 --- a/ruoyi-segchk-web/src/main/java/com/ruoyi/login/SegChkLoginController.java +++ b/ruoyi-segchk-web/src/main/java/com/ruoyi/login/SegChkLoginController.java @@ -1,8 +1,9 @@ package com.ruoyi.login; +import com.alibaba.fastjson.JSON; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.segchk.domain.SegchkUserWebReq; -import com.ruoyi.util.Claims; +import com.ruoyi.util.*; import com.ruoyi.appletsutil.ResultCode; import com.ruoyi.appletsutil.UnAuthorizedException; 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.utils.SnowflakeIdWorker; 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.vo.BindParams; import com.ruoyi.setting.bean.WechatPaySet; import com.ruoyi.setting.service.ILsPaySettingService; -import com.ruoyi.util.CommonConstant; -import com.ruoyi.util.WeChatAppletUtils; +import com.ruoyi.util.bean.SegUserProfile; +import com.ruoyi.util.bean.UserInfoProfile; import io.swagger.annotations.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,6 +33,8 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -272,6 +273,7 @@ public class SegChkLoginController { segchkUserWechat.setUnionId(weChatAppletLoginResponse.getUnionid()); segchkUserWechat.setProviderId(Long.valueOf(bindParams.getProviderId())); segchkUserWechat.setNickName(bindParams.getNickName()); + segchkUserWechat.setIconUrl(bindParams.getAvatar()); // 将用户与微信openid绑定 int ret = weChatCustomerLinkService.addSegchkUserWechat(segchkUserWechat, bindParams.getUserLevel()); @@ -296,8 +298,25 @@ public class SegChkLoginController { redisService.setCacheObject(token, claims, loginexpire, TimeUnit.HOURS); } StringBuilder sb = new StringBuilder(CommonConstant.APPLET_BIND_OPENID).append("-").append(token); - redisService.setCacheObject(sb.toString(), segchkUserWechat, 7100, TimeUnit.SECONDS); - weChatAppletLoginResponse.getSession_key(); + redisService.setCacheObject(sb.toString(), segchkUserWechat, 7200, TimeUnit.SECONDS); + + +// 测试,解析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); } diff --git a/ruoyi-segchk-web/src/main/java/com/ruoyi/segchk/SegchkDefaultStoreController.java b/ruoyi-segchk-web/src/main/java/com/ruoyi/segchk/SegchkDefaultStoreController.java index 7dfd6e4..76240bd 100644 --- a/ruoyi-segchk-web/src/main/java/com/ruoyi/segchk/SegchkDefaultStoreController.java +++ b/ruoyi-segchk-web/src/main/java/com/ruoyi/segchk/SegchkDefaultStoreController.java @@ -88,6 +88,11 @@ public class SegchkDefaultStoreController extends BaseController // 登录超时时长,单位天,-1永久有效 @Value("${yzytest.login.loginexpire:#{1}}") private Integer loginexpire; + +// 如果是一张新会员卡,在第一次核消是是否给商家返利 + @Value("${segchk.servicecheck.storereward.enable:false}") + private Boolean stoRewardWithChk; + /** * 查询seg用户中心信息 尹志颖 * { @@ -302,7 +307,7 @@ public class SegchkDefaultStoreController extends BaseController ajax.put(MSG_TAG, "该预约单在本店已无可用权益次数"); } else if(segchkServiceOrderChkTestResp.getCanFree() == 1){ - int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, likegoId); + int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, likegoId, stoRewardWithChk); ajax.put(CODE_TAG, "200"); segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(null); @@ -313,7 +318,7 @@ public class SegchkDefaultStoreController extends BaseController redisService.setCacheObject(sb.toString(), likegoId, 5, TimeUnit.MINUTES); } else { - int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, likegoId); + int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, likegoId, stoRewardWithChk); if(ret != 3){ ajax.put(CODE_TAG, "500"); @@ -322,6 +327,13 @@ public class SegchkDefaultStoreController extends BaseController else{ ajax.put(CODE_TAG, "200"); ajax.put(MSG_TAG, "核消成功"); + List 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); StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append("-").append(segchkServiceOrderChkTestResp.getUserId()); logger.debug("ServiceCheckTest will store likego : {}:{}", sb.toString(), likegoId); diff --git a/ruoyi-segchk-web/src/main/java/com/ruoyi/segchk/SegchkDefaultUserController.java b/ruoyi-segchk-web/src/main/java/com/ruoyi/segchk/SegchkDefaultUserController.java index 3c53f61..e0286f5 100644 --- a/ruoyi-segchk-web/src/main/java/com/ruoyi/segchk/SegchkDefaultUserController.java +++ b/ruoyi-segchk-web/src/main/java/com/ruoyi/segchk/SegchkDefaultUserController.java @@ -1,9 +1,7 @@ package com.ruoyi.segchk; -import com.alibaba.fastjson.JSONObject; import com.ruoyi.appletsutil.ResultCode; import com.ruoyi.appletsutil.UnAuthorizedException; -import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.UnAuth; 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.redis.RedisCache; import com.ruoyi.common.core.text.Convert; -import com.ruoyi.common.enums.BusinessType; import com.ruoyi.member.service.WeChatCustomerLinkService; import com.ruoyi.segchk.domain.*; import com.ruoyi.segchk.service.*; @@ -20,7 +17,6 @@ import com.ruoyi.setting.bean.WechatPaySet; import com.ruoyi.setting.service.ILsPaySettingService; import com.ruoyi.util.*; import com.ruoyi.util.bean.PrepayResult; -import com.ruoyi.util.bean.WechatApletPrepayResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -199,7 +195,8 @@ public class SegchkDefaultUserController extends BaseController } segchkServiceOrderWebReq.setUserId(claims.getUserId()); List 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())){ // 如果待生成订单需要用户调起支付时 - segchkUserWechat = getSegchkUserWechat(request, segchkUserCharge.getSearchValue(), claims.getUserLevel()); + segchkUserWechat = getSegchkUserWechat(request, segchkUserCharge.getSearchValue(), claims); if(ObjectUtils.isEmpty(segchkUserWechat)){ return AjaxResult.error(500, "微信绑定失败!"); @@ -804,7 +801,7 @@ public class SegchkDefaultUserController extends BaseController return AjaxResult.error(301, "运营商无法线上提现"); } SegchkUserWechat segchkUserWechat = null; - segchkUserWechat = getSegchkUserWechat(request, segchkUserCashOpsReq.getSearchValue(), claims.getUserLevel()); + segchkUserWechat = getSegchkUserWechat(request, segchkUserCashOpsReq.getSearchValue(), claims); if(ObjectUtils.isEmpty(segchkUserWechat)){ return AjaxResult.error(500, "微信绑定失败!"); @@ -974,11 +971,12 @@ public class SegchkDefaultUserController extends BaseController 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); StringBuilder sb = new StringBuilder(CommonConstant.APPLET_BIND_OPENID).append("-").append(token); SegchkUserWechat segchkUserWechat = redisService.getCacheObject(sb.toString()); - +// 暂时未解决重复获取openid问题 +// segchkUserWechat = null; if(ObjectUtils.isEmpty(segchkUserWechat)){ // redis没有用户微信openid时,重新获取 segchkUserWechat = new SegchkUserWechat(); @@ -997,13 +995,16 @@ public class SegchkDefaultUserController extends BaseController } segchkUserWechat.setOpenid(weChatAppletLoginResponse.getOpenid()); segchkUserWechat.setUnionId(weChatAppletLoginResponse.getUnionid()); - redisService.setCacheObject(sb.toString(), segchkUserWechat, 7100, TimeUnit.SECONDS); - int ret = weChatCustomerLinkService.addSegchkUserWechat(segchkUserWechat, String.valueOf(userLevel)); + redisService.setCacheObject(sb.toString(), segchkUserWechat, 7200, TimeUnit.SECONDS); + segchkUserWechat.setUserId(claims.getUserId()); + segchkUserWechat.setProviderId(claims.getProviderId()); + int ret = weChatCustomerLinkService.addSegchkUserWechat(segchkUserWechat, String.valueOf(claims.getUserLevel())); 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; diff --git a/ruoyi-segchk-web/src/main/java/com/ruoyi/util/IndexController.java b/ruoyi-segchk-web/src/main/java/com/ruoyi/util/IndexController.java index 4ea518b..dcb9fa9 100644 --- a/ruoyi-segchk-web/src/main/java/com/ruoyi/util/IndexController.java +++ b/ruoyi-segchk-web/src/main/java/com/ruoyi/util/IndexController.java @@ -2,6 +2,7 @@ package com.ruoyi.util; import com.ruoyi.common.core.controller.BaseController; 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.RestController; @@ -25,4 +26,8 @@ public class IndexController extends BaseController { return wxchecktxt; } + @GetMapping("getWxAccessToken") + public String getWxAccessToken(){ + return null; + } } diff --git a/ruoyi-segchk-web/src/main/resources/application-dev.yml b/ruoyi-segchk-web/src/main/resources/application-dev.yml index e60edb6..90c9625 100644 --- a/ruoyi-segchk-web/src/main/resources/application-dev.yml +++ b/ruoyi-segchk-web/src/main/resources/application-dev.yml @@ -127,6 +127,9 @@ yzytest: smsplatid: 3 segchk: + servicecheck: + storereward: + enable: false # 提现额度 cash: # 商户提现额度 diff --git a/ruoyi-segchk-web/src/main/resources/application-test.yml b/ruoyi-segchk-web/src/main/resources/application-test.yml index da77f8e..0bb1cc5 100644 --- a/ruoyi-segchk-web/src/main/resources/application-test.yml +++ b/ruoyi-segchk-web/src/main/resources/application-test.yml @@ -120,7 +120,10 @@ yzytest: loginexpire: 8 segchk: -# 提现额度 + servicecheck: + storereward: + enable: false + # 提现额度 cash: # 商户提现额度 store_threshold: 300.0 diff --git a/ruoyi-segchk-web/src/main/resources/static/img/discount.png b/ruoyi-segchk-web/src/main/resources/static/img/discount.png new file mode 100644 index 0000000..1c9b0cb Binary files /dev/null and b/ruoyi-segchk-web/src/main/resources/static/img/discount.png differ diff --git a/ruoyi-segchk-web/src/main/resources/static/img/experiencecard.png b/ruoyi-segchk-web/src/main/resources/static/img/experiencecard.png new file mode 100644 index 0000000..afb0caf Binary files /dev/null and b/ruoyi-segchk-web/src/main/resources/static/img/experiencecard.png differ diff --git a/ruoyi-segchk-web/src/main/resources/static/img/storeself.png b/ruoyi-segchk-web/src/main/resources/static/img/storeself.png new file mode 100644 index 0000000..cff52e8 Binary files /dev/null and b/ruoyi-segchk-web/src/main/resources/static/img/storeself.png differ diff --git a/ruoyi-segchk-web/src/main/resources/static/img/teamcard.png b/ruoyi-segchk-web/src/main/resources/static/img/teamcard.png new file mode 100644 index 0000000..260bad1 Binary files /dev/null and b/ruoyi-segchk-web/src/main/resources/static/img/teamcard.png differ diff --git a/ruoyi-segchk-web/src/main/resources/static/img/vipcard1.png b/ruoyi-segchk-web/src/main/resources/static/img/vipcard1.png new file mode 100644 index 0000000..6510efb Binary files /dev/null and b/ruoyi-segchk-web/src/main/resources/static/img/vipcard1.png differ diff --git a/ruoyi-segchk-web/src/main/resources/static/img/vipcard2.png b/ruoyi-segchk-web/src/main/resources/static/img/vipcard2.png new file mode 100644 index 0000000..1031fb3 Binary files /dev/null and b/ruoyi-segchk-web/src/main/resources/static/img/vipcard2.png differ diff --git a/ruoyi-segchk-web/src/main/resources/static/img/vipcard3.png b/ruoyi-segchk-web/src/main/resources/static/img/vipcard3.png new file mode 100644 index 0000000..fd879fc Binary files /dev/null and b/ruoyi-segchk-web/src/main/resources/static/img/vipcard3.png differ diff --git a/ruoyi-segchk-web/src/main/resources/static/img/vouchers.png b/ruoyi-segchk-web/src/main/resources/static/img/vouchers.png new file mode 100644 index 0000000..b5808ab Binary files /dev/null and b/ruoyi-segchk-web/src/main/resources/static/img/vouchers.png differ diff --git a/ruoyi-segchk-web/src/main/resources/test.http b/ruoyi-segchk-web/src/main/resources/test.http index d64aa34..048fad9 100644 --- a/ruoyi-segchk-web/src/main/resources/test.http +++ b/ruoyi-segchk-web/src/main/resources/test.http @@ -434,7 +434,8 @@ Authorization: Bearer {{bindtoken}} { "userId": 241, "providerId": 4, - "userLevel": 0, + "userLevel": 2, + "cardFlag": 0, "remark": "999999" } diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/member/service/impl/LoginServiceImpl.java b/ruoyi-segchk/src/main/java/com/ruoyi/member/service/impl/LoginServiceImpl.java index 087bda6..41dd100 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/member/service/impl/LoginServiceImpl.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/member/service/impl/LoginServiceImpl.java @@ -18,6 +18,9 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; + /** * Created by 魔金商城 on 17/7/17. * 登录服务接口 @@ -186,23 +189,28 @@ public class LoginServiceImpl implements LoginService { segchkUserWebResp = segchkProviderIndexService.selectSegchkProviderWebInfo(segchkUserWebReq); segchkUserWebResp.setUserLevel(0); segchkUserWebResp.setUserId(segchkUserWebReq.getProviderId()); - ajaxResult = AjaxResult.success(segchkUserWebResp); break; } case 1: { segchkUserWebResp = segchkStoreIndexService.selectSegchkStoreWebInfo(segchkUserWebReq); segchkUserWebResp.setUserLevel(1); - ajaxResult = AjaxResult.success(segchkUserWebResp); break; } case 2: { segchkUserWebResp = segchkUserIndexService.selectSegchkUserWebInfo(segchkUserWebReq); segchkUserWebResp.setUserLevel(2); - ajaxResult = AjaxResult.success(segchkUserWebResp); 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; } diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/member/vo/BindParams.java b/ruoyi-segchk/src/main/java/com/ruoyi/member/vo/BindParams.java index 30c56d8..a5ec429 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/member/vo/BindParams.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/member/vo/BindParams.java @@ -50,6 +50,12 @@ public class BindParams extends BaseEntity { @ApiModelProperty(value = "头像") private String avatar; + /** + * getUserProfile返回 + */ + @ApiModelProperty(value = "getUserProfile返回") + private String profileRes; + /** * 验证验证码 是否正确 (目前都不需要验证码) @@ -110,6 +116,14 @@ public class BindParams extends BaseEntity { this.avatar = avatar; } + public String getProfileRes() { + return profileRes; + } + + public void setProfileRes(String profileRes) { + this.profileRes = profileRes; + } + @Override public String toString() { return "BindParams{" + @@ -119,6 +133,7 @@ public class BindParams extends BaseEntity { ", code='" + code + '\'' + ", nickName='" + nickName + '\'' + ", avatar='" + avatar + '\'' + + ", profileRes='" + profileRes + '\'' + '}'; } } diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkChargeReward.java b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkChargeReward.java index 4d5e0ee..fbc5a50 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkChargeReward.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkChargeReward.java @@ -1,20 +1,38 @@ package com.ruoyi.segchk.domain; import com.ruoyi.common.core.domain.BaseEntity; +import org.springframework.util.ObjectUtils; import java.math.BigDecimal; public class SegchkChargeReward extends BaseEntity { +// 会员卡类型id private Integer cardTypeId; +// 会员卡id + private Long cardId; +// 对应用户id private Long userId; +// 运营商id private Long providerId; +// 充值id private Long chargeId; +// 奖励id private Long rewardId; +// 使用次数 + private Long useCount; +// 在目标商家核消次数 + private Long chkCount; +// 充值金额 private BigDecimal charge; +// 余额使用额度 private BigDecimal accountUsed; +// 推荐人id private Long userRecommenders; +// 推荐人角色 private Integer recommendersLevel; +// 持卡用户充值成功次数 private Integer totalChargeCount; +// 奖励金额 private BigDecimal reward; public Integer getCardTypeId() { @@ -105,14 +123,41 @@ public class SegchkChargeReward extends BaseEntity { 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 public String toString() { return "SegchkChargeReward{" + "cardTypeId=" + cardTypeId + + ", cardId=" + cardId + ", userId=" + userId + ", providerId=" + providerId + ", chargeId=" + chargeId + ", rewardId=" + rewardId + + ", useCount=" + useCount + + ", chkCount=" + chkCount + ", charge=" + charge + ", accountUsed=" + accountUsed + ", userRecommenders=" + userRecommenders + @@ -121,4 +166,42 @@ public class SegchkChargeReward extends BaseEntity { ", 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; + } + + } + } } diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkCommentAcc.java b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkCommentAcc.java deleted file mode 100644 index de7175b..0000000 --- a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkCommentAcc.java +++ /dev/null @@ -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(); - } -} diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkUserWebCardResp.java b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkUserWebCardResp.java deleted file mode 100644 index 86dfb6f..0000000 --- a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/domain/SegchkUserWebCardResp.java +++ /dev/null @@ -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 + '\'' + - '}'; - } -} diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/mapper/SegchkStoreIndexMapper.java b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/mapper/SegchkStoreIndexMapper.java index 7d97970..44dcfdc 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/mapper/SegchkStoreIndexMapper.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/mapper/SegchkStoreIndexMapper.java @@ -149,4 +149,6 @@ public interface SegchkStoreIndexMapper { public int addAccountByReward(SegchkChargeReward segchkChargeReward); Long getVipCardFromLikego(Long likegoId); + + public int addCommentAccByComment(Long commentId); } diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/mapper/SegchkUserIndexMapper.java b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/mapper/SegchkUserIndexMapper.java index f798996..90f09fd 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/mapper/SegchkUserIndexMapper.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/mapper/SegchkUserIndexMapper.java @@ -126,7 +126,11 @@ public interface SegchkUserIndexMapper { public String selectSegchkUserName(String userId); - public SegchkChargeReward selectSegchkRewardInfo(SegchkUserCharge segchkUserCharge); + public SegchkChargeReward selectSegchkRewardInfoForCharge(Map paramsMap); int addAccountByReward(SegchkChargeReward segchkChargeReward); + + Map getCardInfo(Map paramsMap); + + SegchkChargeReward selectSegchkRewardInfoForCheck(Map params); } diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/ISegchkStoreIndexService.java b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/ISegchkStoreIndexService.java index f3918e7..a4b7f5e 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/ISegchkStoreIndexService.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/ISegchkStoreIndexService.java @@ -186,4 +186,6 @@ public interface ISegchkStoreIndexService Long getVipCardFromLikego(Long likegoId); HashMap getCustomService(Long providerId); + + public int addCommentAccByComment(Long commentId); } diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/ISegchkUserIndexService.java b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/ISegchkUserIndexService.java index fd4d352..f0b1de2 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/ISegchkUserIndexService.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/ISegchkUserIndexService.java @@ -108,9 +108,10 @@ public interface ISegchkUserIndexService * * @param segchkServiceOrderChkTestResp 核消检查信息 * @param likegoId 预约单id + * @param stoRewardWithChk * @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); + + /** + * 根据用户充值等信息获取相关的返利信息 + * + * @param params 充值信息 + * @return 结果 + */ + int makeChargeReward(Map params); + /** * 根据支用户id,运营商id,查询该用户可购买的卡 * diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/impl/ISegchkStoreIndexServiceImpl.java b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/impl/ISegchkStoreIndexServiceImpl.java index d85a9d6..6ba3dcf 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/impl/ISegchkStoreIndexServiceImpl.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/impl/ISegchkStoreIndexServiceImpl.java @@ -361,7 +361,7 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService { @Override public Integer addStoreSelfCard(SegchkStoreSelfMgt segchkStoreSelfMgt) { - if(segchkStoreSelfMgt.getTypeId() != 2){ + if(segchkStoreSelfMgt.getTypeId() == 2){ // 说明是优惠券 SegchkPreferenceLable segchkPreferenceLable = segchkPreferenceLableService.selectSegchkPreferenceLableByPreferenceId(segchkStoreSelfMgt.getLableId()); segchkStoreSelfMgt.setFreeName(segchkPreferenceLable.getPreferenceName()); @@ -383,4 +383,11 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService { public HashMap getCustomService(Long 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; + } } diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/impl/SegchkUserIndexServiceImpl.java b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/impl/SegchkUserIndexServiceImpl.java index 30ed389..d964ed1 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/impl/SegchkUserIndexServiceImpl.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/segchk/service/impl/SegchkUserIndexServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.segchk.service.impl; +import com.alibaba.fastjson.JSON; import com.ruoyi.order.service.impl.PaySupplier; //import com.ruoyi.order.service.impl.WechatWithdrawSupplier; import com.ruoyi.segchk.domain.*; @@ -21,7 +22,9 @@ import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.net.URLEncoder; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -291,48 +294,81 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService * * @param segchkServiceOrderChkTestResp * @param likegoId + * @param stoRewardWithChk * @return 结果 */ @Override @Transactional - public int OrderCheckTransaction(SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp, Long likegoId) { + public int OrderCheckTransaction(SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp, Long likegoId, Boolean stoRewardWithChk) { logger.debug("OrderCheckTransaction with: {}---{}", segchkServiceOrderChkTestResp.toString(), likegoId); int ret = 0; + Long tmpStoreId = segchkServiceOrderChkTestResp.getStoreId(); if(segchkServiceOrderChkTestResp.getCardType() == 0){ // 说明是会员卡,则先更新会员卡次数。然后插入核消记录,最后更新预约订单状态 // SegchkUserVip segchkUserVip = new SegchkUserVip(); logger.debug("OrderCheckTransaction will check with vip card"); 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.setCardId(segchkServiceOrderChkTestResp.getCardId()); // segchkServiceChk.setCardTypeId(0L); segchkServiceChk.setProviderId(segchkServiceOrderChkTestResp.getProviderId()); - segchkServiceChk.setStoreId(segchkServiceOrderChkTestResp.getStoreId()); + segchkServiceChk.setStoreId(tmpStoreId); segchkServiceChk.setUserId(segchkServiceOrderChkTestResp.getUserId()); ret += segchkServiceChkMapper.insertSegchkServiceChk(segchkServiceChk); - System.out.println(ret); + logger.debug("OrderCheckTransaction save({}) service-check with ({})" + , (ret == 2 ? "successed" : "failed") + , segchkServiceChk.toString()); + + if(stoRewardWithChk){ +// 如果允许,会员卡第一次核消,将给该商家返利 + Map 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 { // 说明是优惠券或赠卡则先更新赠卡次数。然后插入核消记录,最后更新预约订单状态 logger.debug("OrderCheckTransaction will check with store card"); 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.setCardId(segchkServiceOrderChkTestResp.getCardId()); segchkSelfServiceChk.setProviderId(segchkServiceOrderChkTestResp.getProviderId()); - segchkSelfServiceChk.setStoreId(segchkServiceOrderChkTestResp.getStoreId()); + segchkSelfServiceChk.setStoreId(tmpStoreId); segchkSelfServiceChk.setUserId(segchkServiceOrderChkTestResp.getUserId()); 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.setLikegoId(likegoId); segchkUserLikego.setMgtState(2); - logger.debug("OrderCheckTransaction will update likego"); + ret += segchkUserLikegoMapper.updateSegchkUserLikego(segchkUserLikego); - System.out.println(ret); + logger.debug("OrderCheckTransaction update({}) likego({})" + , (ret == 3 ? "successed" : "failed") + , likegoId); return ret; } @@ -386,84 +422,132 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService int updaterest = segchkUserChargeMapper.updateSegchkUserChargeByRet(segchkUserCharge); logger.warn("chargeRet update with {} result: {}", "success", updaterest == 1 ? "successed" : "failed"); -// 计算返利.给用户或商户,运营商加余额 - SegchkChargeReward segchkChargeReward = segchkUserIndexMapper.selectSegchkRewardInfo(segchkUserCharge1); - - if(ObjectUtils.isEmpty(segchkChargeReward.getUserRecommenders()) || ObjectUtils.isEmpty(segchkChargeReward.getRecommendersLevel())){ -// 推荐人是平台 - logger.warn("chargeRet charge({}) reward is will belong to platform", chargeId); - } - /*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()); - } - } + Map params = new HashMap<>(); + params.put("chargeId", segchkUserCharge1.getChargeId()); + params.put("userId", segchkUserCharge1.getUserId()); + params.put("providerId", segchkUserCharge1.getProviderId()); + params.put("cardTypeId", segchkUserCharge1.getCardTypeId()); + params.put("cardId", segchkChargeRet.getCardId()); + updaterest = makeChargeReward(params); } else{ logger.warn("chargeRet with: {}---{}, 充值失败!!!", chargeId.toString(), ret); SegchkUserCharge segchkUserCharge = new SegchkUserCharge(); segchkUserCharge.setChargeId(Long.parseLong(chargeId)); - segchkUserCharge.setRetFlag(2); + segchkUserCharge.setRetFlag(-1); int updaterest = segchkUserChargeMapper.updateSegchkUserCharge(segchkUserCharge); int deleterest = segchkIndexUserAccountMapper.deleteSegchkUserAccountByCharge(segchkUserCharge); logger.warn("chargeRet update with {} result: {}", "failed", deleterest == 1 ? "successed" : "failed"); } } + @Override + public int makeChargeReward(Map 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 params) { + return 0; + } + /** * 根据支用户id,运营商id,查询该用户可购买的卡 * @@ -583,6 +667,7 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService SegchkServiceChk segchkServiceChk = new SegchkServiceChk(); segchkServiceChk.setCommentId(segchkServiceCommentUserReq.getCommentId()); segchkServiceChk.setChkServiceId(segchkServiceCommentUserReq.getChkServiceId()); + ret += segchkStoreIndexService.addCommentAccByComment(segchkServiceCommentUserReq.getCommentId()); ret += segchkServiceChkMapper.updateSegchkServiceChk(segchkServiceChk); return ret; } @@ -722,6 +807,15 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService @Override public int updateWeChatInfoByUserId(SegchkUserWechat segchkUserWechat, String 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){ case "0": return segchkUserIndexMapper.updateSegchkProviderWechat(segchkUserWechat); case "1": return segchkUserIndexMapper.updateSegchkStoreWechat(segchkUserWechat); diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/util/AesUtils.java b/ruoyi-segchk/src/main/java/com/ruoyi/util/AesUtils.java index db7acf8..5eddba5 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/util/AesUtils.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/util/AesUtils.java @@ -47,7 +47,7 @@ public class AesUtils { public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException { try { // java是没有 - Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC"); Key sKeySpec = new SecretKeySpec(keyByte, "AES"); cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化 diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/util/WeChatAppletLoginResponse.java b/ruoyi-segchk/src/main/java/com/ruoyi/util/WeChatAppletLoginResponse.java index e6f0e49..374291e 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/util/WeChatAppletLoginResponse.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/util/WeChatAppletLoginResponse.java @@ -3,6 +3,7 @@ package com.ruoyi.util; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** @@ -34,7 +35,7 @@ public class WeChatAppletLoginResponse { * 错误码(出错时返回) */ @JSONField(name = "errcode") - private String errcode; + private Integer errcode; /** * 错误信息(出错时返回) @@ -61,7 +62,7 @@ public class WeChatAppletLoginResponse { */ @JsonIgnore public boolean isError() { - return !StringUtils.isEmpty(this.errcode); + return this.errcode != null && this.errcode != 0 ; } /** @@ -69,7 +70,7 @@ public class WeChatAppletLoginResponse { */ @JsonIgnore public String errCodeDesc() { - switch (Integer.valueOf(this.errcode)){ + switch (this.errcode){ case -1: return "系统繁忙,此时请开发者稍候再试"; case 0: return "请求成功"; case 40029: return "code 无效"; @@ -113,11 +114,11 @@ public class WeChatAppletLoginResponse { this.unionid = unionid; } - public String getErrcode() { + public Integer getErrcode() { return errcode; } - public void setErrcode(String errcode) { + public void setErrcode(Integer errcode) { this.errcode = errcode; } diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/util/WeChatAppletUtils.java b/ruoyi-segchk/src/main/java/com/ruoyi/util/WeChatAppletUtils.java index ba6f22e..558d5e2 100644 --- a/ruoyi-segchk/src/main/java/com/ruoyi/util/WeChatAppletUtils.java +++ b/ruoyi-segchk/src/main/java/com/ruoyi/util/WeChatAppletUtils.java @@ -6,7 +6,10 @@ import com.ruoyi.common.annotation.Log; import com.ruoyi.util.WeChatAppletLoginResponse; import com.ruoyi.util.WeChatAppletUserInfo; 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.lang3.ObjectUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; @@ -27,6 +30,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Arrays; import java.util.Objects; /** @@ -70,24 +74,68 @@ public class WeChatAppletUtils { */ public static WeChatAppletLoginResponse getLoginInfo(String code, WechatSetting 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) - : 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; -// JSONObject jsonObject = JSON.parseObject(WechatUtils.executeHttpGet(String.format(GET_LOGIN_INFO_URL, wechatSetting.getAppId(), wechatSetting.getAppSecret(), code))); - logger.warn("getLoginInfo get WeChatAppletLoginResponse: {}", weChatAppletLoginResponse.toString()); + String s = WechatUtils.executeHttpGet(String.format(GET_LOGIN_INFO_URL, wechatSetting.getAppId(), wechatSetting.getAppSecret(), code)); + logger.warn("getLoginInfo res: ({})", s); + WeChatAppletLoginResponse weChatAppletLoginResponse = JSONObject.parseObject(s, WeChatAppletLoginResponse.class); +// logger.warn("getLoginInfo get WeChatAppletLoginResponse: {}", weChatAppletLoginResponse.toString()); if (Objects.isNull(weChatAppletLoginResponse)) { logger.error("getLoginInfo fail : weChatAppletLoginResponse is null"); return null; } 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; } logger.debug("getLoginInfo get user wechat info: {}", weChatAppletLoginResponse.toString()); 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 * diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/util/bean/SegUserProfile.java b/ruoyi-segchk/src/main/java/com/ruoyi/util/bean/SegUserProfile.java new file mode 100644 index 0000000..f5023c6 --- /dev/null +++ b/ruoyi-segchk/src/main/java/com/ruoyi/util/bean/SegUserProfile.java @@ -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 + '\'' + + '}'; + } +} diff --git a/ruoyi-segchk/src/main/java/com/ruoyi/util/bean/UserInfoProfile.java b/ruoyi-segchk/src/main/java/com/ruoyi/util/bean/UserInfoProfile.java new file mode 100644 index 0000000..7a8531a --- /dev/null +++ b/ruoyi-segchk/src/main/java/com/ruoyi/util/bean/UserInfoProfile.java @@ -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 + '\'' + + '}'; + } +} diff --git a/ruoyi-segchk/src/main/resources/mapper/segchk/SegchkProviderIndexMapper.xml b/ruoyi-segchk/src/main/resources/mapper/segchk/SegchkProviderIndexMapper.xml index fe8529e..568f7ab 100644 --- a/ruoyi-segchk/src/main/resources/mapper/segchk/SegchkProviderIndexMapper.xml +++ b/ruoyi-segchk/src/main/resources/mapper/segchk/SegchkProviderIndexMapper.xml @@ -157,7 +157,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select @@ -616,7 +636,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 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 = ]]> 1 and date_format(mod_time, '%Y%m') = date_format(#{staticMonth}, '%Y%m') order by mod_time desc) charge 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 order by mod_time desc diff --git a/ruoyi-segchk/src/main/resources/mapper/segchk/SegchkUserIndexMapper.xml b/ruoyi-segchk/src/main/resources/mapper/segchk/SegchkUserIndexMapper.xml index 3fa829e..52f3a37 100644 --- a/ruoyi-segchk/src/main/resources/mapper/segchk/SegchkUserIndexMapper.xml +++ b/ruoyi-segchk/src/main/resources/mapper/segchk/SegchkUserIndexMapper.xml @@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -190,6 +191,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + - select card.effective_time , card.use_count @@ -283,7 +288,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , provcard.card_type_name , 0 as type_flag , case when to_days(card.effective_time) 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 (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 @@ -306,7 +312,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , left_count , 1 as type_flag , 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 from (select @@ -315,16 +322,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , provider_id , free_content as card_content , left_count - , if(type_id = 2, free_name, '本店专享') as card_type_name - , if(date_sub(current_date, interval 0 day )) ]]> to_days(mod_time), '过期', '可用') as card_status - + , if(type_id = 2, free_name, '本店尊享') as card_type_name + , if(to_days(current_date) ]]> to_days(mod_time), '过期', '可用') as card_status , type_id + , lable_id from segchk_store_self_mgt where provider_id = #{providerId} and user_id = #{userId} and left_count ]]> 0 and status = 0) pserformance 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 left join - (select * from segchk_card_img_ctl where provider_id = #{providerId} and type_id 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 0) scic on pserformance.lable_id = scic.lable_id and pserformance.type_id = scic.type_id left join (select * from segchk_card_img where provider_id = #{providerId}) sci on scic.img_id = sci.id 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(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.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.store_id, null) as lable_sort , if(to_days(suv.effective_time) ]]> 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 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 = ]]> 1 group by provider_id, user_id, card_type_id ) suc 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} - select card_type_id , user_id , provider_id @@ -723,6 +731,50 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" on succnt.user_id = suc.user_id ) ret + + insert into segchk_user_wechat diff --git a/ruoyi-system/src/main/java/com/ruoyi/segchk/domain/SegchkCommentAcc.java b/ruoyi-system/src/main/java/com/ruoyi/segchk/domain/SegchkCommentAcc.java index 52de96b..b3ef66c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/segchk/domain/SegchkCommentAcc.java +++ b/ruoyi-system/src/main/java/com/ruoyi/segchk/domain/SegchkCommentAcc.java @@ -37,6 +37,10 @@ public class SegchkCommentAcc extends BaseEntity @Excel(name = "运营商id,全局唯一") private Long providerId; + /** 评价id */ + @Excel(name = "评价id") + private Long commentId; + /** 创建或修改时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd") @@ -97,15 +101,24 @@ public class SegchkCommentAcc extends BaseEntity return modTime; } + public Long getCommentId() { + return commentId; + } + + public void setCommentId(Long commentId) { + this.commentId = commentId; + } + @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(); + return "SegchkCommentAcc{" + + "updateId=" + updateId + + ", starCount=" + starCount + + ", starLevel=" + starLevel + + ", storeId=" + storeId + + ", providerId=" + providerId + + ", commentId=" + commentId + + ", modTime=" + modTime + + '}'; } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/segchk/domain/SegchkUserWebCardResp.java b/ruoyi-system/src/main/java/com/ruoyi/segchk/domain/SegchkUserWebCardResp.java index 682c7b8..9f3d1b7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/segchk/domain/SegchkUserWebCardResp.java +++ b/ruoyi-system/src/main/java/com/ruoyi/segchk/domain/SegchkUserWebCardResp.java @@ -8,7 +8,7 @@ import java.util.Date; /** * seg用户基本信息对象 segchk_user_basic_info - * + * * @author yinzhiying * @date 2021-07-01 */ @@ -17,6 +17,14 @@ public class SegchkUserWebCardResp extends BaseEntity private static final long serialVersionUID = 1L; + /** 运营商id */ + @Excel(name = "运营商id") + private Long providerId; + + /** 商家id */ + @Excel(name = "商家id") + private Long storeId; + /** 卡名称 */ @Excel(name = "卡名称") private String cardName; @@ -26,15 +34,6 @@ public class SegchkUserWebCardResp extends BaseEntity private String storeName; - /** 商家id */ - @Excel(name = "商家id") - private String storeId; - - /** providerId */ - @Excel(name = "providerId") - private String providerId; - - /** 使用次数 */ @Excel(name = "使用次数") private Integer useCount; @@ -56,6 +55,18 @@ public class SegchkUserWebCardResp extends BaseEntity @Excel(name = "卡券状态") private String cardStatus; + /** 卡券说明 */ + @Excel(name = "卡券说明") + private String cardContent; + + /** 卡券说明 */ + @Excel(name = "卡券说明") + private String bgUrl; + + /** 内容色号 */ + @Excel(name = "内容色号") + private String contentColor; + public String getCardName() { return cardName; } @@ -112,25 +123,61 @@ public class SegchkUserWebCardResp extends BaseEntity 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; } - public void setStoreId(String storeId) { + public void setStoreId(Long storeId) { this.storeId = storeId; } @Override public String toString() { return "SegchkUserWebCardResp{" + - "cardName='" + cardName + '\'' + + "providerId=" + providerId + + ", storeId=" + storeId + + ", cardName='" + cardName + '\'' + ", storeName='" + storeName + '\'' + - ", storeId='" + storeId + '\'' + ", useCount=" + useCount + ", leftCount=" + leftCount + ", effectiveTime=" + effectiveTime + ", typeFlag=" + typeFlag + ", cardStatus='" + cardStatus + '\'' + + ", cardContent='" + cardContent + '\'' + + ", bgUrl='" + bgUrl + '\'' + + ", contentColor='" + contentColor + '\'' + '}'; } } diff --git a/ruoyi-system/src/main/resources/mapper/segchk/SegchkCommentAccMapper.xml b/ruoyi-system/src/main/resources/mapper/segchk/SegchkCommentAccMapper.xml index 54a2c6a..43f0840 100644 --- a/ruoyi-system/src/main/resources/mapper/segchk/SegchkCommentAccMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/segchk/SegchkCommentAccMapper.xml @@ -11,10 +11,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - 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 @@ -41,6 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" star_level, store_id, provider_id, + comment_id, mod_time, @@ -48,6 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{starLevel}, #{storeId}, #{providerId}, + #{commentId}, #{modTime}, now(), @@ -62,6 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" star_level = #{starLevel}, store_id = #{storeId}, provider_id = #{providerId}, + comment_id = #{commentId} mod_time = #{modTime}, mod_time = now(), diff --git a/ruoyi-system/src/main/resources/mapper/segchk/SegchkIndexUserVipMapper.xml b/ruoyi-system/src/main/resources/mapper/segchk/SegchkIndexUserVipMapper.xml index 19e599b..1a264e2 100644 --- a/ruoyi-system/src/main/resources/mapper/segchk/SegchkIndexUserVipMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/segchk/SegchkIndexUserVipMapper.xml @@ -36,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , left_count , 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 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 diff --git a/ruoyi-system/src/main/resources/mapper/segchk/SegchkUserChargeMapper.xml b/ruoyi-system/src/main/resources/mapper/segchk/SegchkUserChargeMapper.xml index ae50a2d..02fc470 100644 --- a/ruoyi-system/src/main/resources/mapper/segchk/SegchkUserChargeMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/segchk/SegchkUserChargeMapper.xml @@ -72,7 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" now(), - #{retFlag}, + #{retFlag}, 0, @@ -98,7 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , uc.card_type_id , uc.provider_id , now() as mod_time - , 0 as ret_flag from + , uc.ret_flag from ( (select #{userId} as user_id @@ -106,6 +106,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , #{cardTypeId} as card_type_id , #{accountUsed} as account_used , #{providerId} as provider_id + + , 0 + , #{retFlag} + + as ret_flag ) uc left join (select user_id, user_recommenders, recommenders_level, provider_id from segchk_user_ext_info where user_id = #{userId}) suei