master
zyy 5 years ago
parent 59489dc15e
commit 1c1d35401f

@ -1,5 +1,8 @@
package com.bsd.say.config; package com.bsd.say.config;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.bsd.say.entities.AwardList;
import com.bsd.say.mapper.AwardListMapper;
import com.bsd.say.service.RedisService; import com.bsd.say.service.RedisService;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -14,12 +17,16 @@ public class InitConfig {
private Integer amount; private Integer amount;
@Resource @Resource
RedisService redisService; RedisService redisService;
@Resource
private AwardListMapper awardListMapper;
@PostConstruct @PostConstruct
public void initAwardConfig() { public void initAwardConfig() {
for (int i = 0; i < amount; i++) { int awardCount = awardListMapper.selectCount(Wrappers.<AwardList>lambdaQuery().eq(AwardList::getAwardType, 1));
System.out.println("----award---" + awardCount);
for (int i = awardCount + 1; i < amount + 1; i++) {
redisService.set("award-" + i, i); redisService.set("award-" + i, i);
} }

@ -3,6 +3,7 @@ package com.bsd.say.controller;
import com.bsd.say.beans.AjaxRequest; import com.bsd.say.beans.AjaxRequest;
import com.bsd.say.beans.AjaxResult; import com.bsd.say.beans.AjaxResult;
import com.bsd.say.entities.AwardList; import com.bsd.say.entities.AwardList;
import com.bsd.say.exception.AreadyAwardException;
import com.bsd.say.service.AwardListService; import com.bsd.say.service.AwardListService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -12,9 +13,10 @@ import javax.servlet.http.HttpServletRequest;
@RestController @RestController
@RequestMapping("award-list") @RequestMapping("award-list")
@CrossOrigin @CrossOrigin
public class AwardListController extends BaseController<AwardListService, AwardList>{ public class AwardListController extends BaseController<AwardListService, AwardList> {
@Resource @Resource
private AwardListService awardListService; private AwardListService awardListService;
@Override @Override
public AwardListService getBaseService() { public AwardListService getBaseService() {
return super.getBaseService(); return super.getBaseService();
@ -40,7 +42,7 @@ public class AwardListController extends BaseController<AwardListService, AwardL
*/ */
@RequestMapping(value = "/is-valid-lottery") @RequestMapping(value = "/is-valid-lottery")
@ResponseBody @ResponseBody
public AjaxResult isValidLottery(@RequestBody AjaxRequest ajaxRequest){ public AjaxResult isValidLottery(@RequestBody AjaxRequest ajaxRequest) {
AjaxResult ajaxResult = new AjaxResult(); AjaxResult ajaxResult = new AjaxResult();
try { try {
ajaxResult = awardListService.isValidLottery(ajaxRequest); ajaxResult = awardListService.isValidLottery(ajaxRequest);
@ -54,10 +56,16 @@ public class AwardListController extends BaseController<AwardListService, AwardL
} }
@RequestMapping("award") @RequestMapping("award")
public AjaxResult award(@RequestBody AjaxRequest ajaxRequest){ public AjaxResult award(@RequestBody AjaxRequest ajaxRequest) {
AjaxResult ajaxResult = new AjaxResult(); AjaxResult ajaxResult = new AjaxResult();
try { try {
ajaxResult = awardListService.award(ajaxRequest); ajaxResult = awardListService.award(ajaxRequest);
} catch (AreadyAwardException e) {
e.printStackTrace();
String errMsg = e.getMessage() != null ? e.getMessage() : "操作失败";
ajaxResult.setRetcode(AjaxResult.FAILED);
ajaxResult.setRetmsg(errMsg);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
String errMsg = e.getMessage() != null ? e.getMessage() : "操作失败"; String errMsg = e.getMessage() != null ? e.getMessage() : "操作失败";
@ -72,7 +80,7 @@ public class AwardListController extends BaseController<AwardListService, AwardL
*/ */
@RequestMapping(value = "/save-award") @RequestMapping(value = "/save-award")
@ResponseBody @ResponseBody
public AjaxResult saveAward(@RequestBody AjaxRequest ajaxRequest){ public AjaxResult saveAward(@RequestBody AjaxRequest ajaxRequest) {
AjaxResult ajaxResult = new AjaxResult(); AjaxResult ajaxResult = new AjaxResult();
ajaxResult = awardListService.saveAward(ajaxRequest); ajaxResult = awardListService.saveAward(ajaxRequest);
return ajaxResult; return ajaxResult;
@ -83,7 +91,7 @@ public class AwardListController extends BaseController<AwardListService, AwardL
*/ */
@RequestMapping(value = "/get-award-list") @RequestMapping(value = "/get-award-list")
@ResponseBody @ResponseBody
public AjaxResult getAwardList(@RequestBody AjaxRequest ajaxRequest){ public AjaxResult getAwardList(@RequestBody AjaxRequest ajaxRequest) {
AjaxResult ajaxResult = new AjaxResult(); AjaxResult ajaxResult = new AjaxResult();
try { try {
ajaxResult = awardListService.getAwardList(ajaxRequest); ajaxResult = awardListService.getAwardList(ajaxRequest);

@ -0,0 +1,9 @@
package com.bsd.say.exception;
public class AreadyAwardException extends BusinessException {
public AreadyAwardException(String message) {
super(message);
}
}

@ -3,9 +3,10 @@ package com.bsd.say.service;
import com.bsd.say.beans.AjaxRequest; import com.bsd.say.beans.AjaxRequest;
import com.bsd.say.beans.AjaxResult; import com.bsd.say.beans.AjaxResult;
import com.bsd.say.entities.AwardList; import com.bsd.say.entities.AwardList;
import com.bsd.say.exception.AreadyAwardException;
public interface AwardListService extends BaseService<AwardList>{ public interface AwardListService extends BaseService<AwardList>{
AjaxResult award(AjaxRequest ajaxRequest); AjaxResult award(AjaxRequest ajaxRequest) throws AreadyAwardException;
AjaxResult isValidLottery(AjaxRequest ajaxRequest); AjaxResult isValidLottery(AjaxRequest ajaxRequest);

@ -8,11 +8,13 @@ import com.bsd.say.entities.AwardList;
import com.bsd.say.entities.Coupon; import com.bsd.say.entities.Coupon;
import com.bsd.say.entities.Record; import com.bsd.say.entities.Record;
import com.bsd.say.entities.Users; import com.bsd.say.entities.Users;
import com.bsd.say.exception.AreadyAwardException;
import com.bsd.say.mapper.AwardListMapper; import com.bsd.say.mapper.AwardListMapper;
import com.bsd.say.mapper.CouponMapper; import com.bsd.say.mapper.CouponMapper;
import com.bsd.say.mapper.RecordMapper; import com.bsd.say.mapper.RecordMapper;
import com.bsd.say.mapper.UsersMapper; import com.bsd.say.mapper.UsersMapper;
import com.bsd.say.service.AwardListService; import com.bsd.say.service.AwardListService;
import com.bsd.say.service.RedisService;
import com.bsd.say.util.LogUtils; import com.bsd.say.util.LogUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -29,6 +31,7 @@ import java.util.List;
@Service("awardListService") @Service("awardListService")
@Transactional @Transactional
public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, AwardList> implements AwardListService { public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, AwardList> implements AwardListService {
@Value("${award.rule}") @Value("${award.rule}")
private Integer rule; private Integer rule;
@Value("${award.amount}") @Value("${award.amount}")
@ -40,6 +43,8 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
@Resource @Resource
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
@Resource @Resource
private RedisService redisService;
@Resource
private CouponMapper couponMapper; private CouponMapper couponMapper;
@Resource @Resource
private RecordMapper recordMapper; private RecordMapper recordMapper;
@ -60,28 +65,38 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
* @return * @return
*/ */
@Override @Override
public AjaxResult award(AjaxRequest ajaxRequest) { public AjaxResult award(AjaxRequest ajaxRequest) throws AreadyAwardException {
synchronized (this) { AjaxResult ajaxResult = new AjaxResult();
AjaxResult ajaxResult = new AjaxResult(); JSONObject data = ajaxRequest.getData();
JSONObject data = ajaxRequest.getData(); if (data == null) {
if (data == null) { ajaxResult.setRetcode(AjaxResult.FAILED);
ajaxResult.setRetmsg("DATA MISSING");
return ajaxResult;
} else {
String openId = data.getString("openId");
// String code = data.getString("code");
if (StringUtils.isEmpty(openId)) {
ajaxResult.setRetcode(AjaxResult.FAILED); ajaxResult.setRetcode(AjaxResult.FAILED);
ajaxResult.setRetmsg("DATA MISSING"); ajaxResult.setRetmsg("openId MISSING");
return ajaxResult; return ajaxResult;
} else { } else {
String openId = data.getString("openId"); Users users = usersMapper.selectOne(Wrappers.<Users>lambdaQuery().eq(Users::getOpenId, openId)
// String code = data.getString("code"); .and(queryWrapper1 -> queryWrapper1.eq(Users::getState, 1)));
if (StringUtils.isEmpty(openId)) {
ajaxResult.setRetcode(AjaxResult.FAILED); // if (redisService.exists("user-award-" + users.getId())) {
ajaxResult.setRetmsg("openId MISSING"); //
return ajaxResult; // AwardList userAWardList = userAWardList = awardListMapper.selectOne(Wrappers.<AwardList>lambdaQuery().eq(AwardList::getUserId, users.getId()));
} else { // if (null != userAWardList) {
JSONObject userInfo = weixinService.getUserInfoByOpenId(openId); //
String unionId = userInfo.getString("unionid"); //
logger.info("union_id:" + unionId); // redisService.set("user-award-" + users.getId(), userAWardList.toString());
Users users = usersMapper.selectOne(Wrappers.<Users>lambdaQuery().eq(Users::getOpenId, openId) // throw new AreadyAwardException("您已经抽过奖了, 不要太贪心哦~~~");
.and(queryWrapper1 -> queryWrapper1.eq(Users::getState, 1))); // }
// }
// synchronized (this) {
AwardList maxIdAward = awardListMapper.selectByMaxId(); AwardList maxIdAward = awardListMapper.selectByMaxId();
Integer newAwardNumner = maxIdAward.getAwardNumber() + 1; Integer newAwardNumner = maxIdAward.getAwardNumber() + 1;
AwardList awardList = new AwardList(); AwardList awardList = new AwardList();
@ -89,9 +104,13 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
awardList.setAwardNumber(newAwardNumner); awardList.setAwardNumber(newAwardNumner);
awardList.setCreateDateTime(new Date()); awardList.setCreateDateTime(new Date());
awardList.setUpdateDateTime(new Date()); awardList.setUpdateDateTime(new Date());
int awardNumber = newAwardNumner / rule;
//中大奖 //中大奖
if (newAwardNumner % rule == 0) { if (newAwardNumner % rule == 0) {
if (newAwardNumner > rule * amount) {
if (newAwardNumner > rule * amount && !redisService.exists("award-" + (awardNumber))) {
logger.info("没一等奖了"); logger.info("没一等奖了");
awardList.setAwardName("波司登优惠券"); awardList.setAwardName("波司登优惠券");
awardList.setAwardType(2); awardList.setAwardType(2);
@ -100,19 +119,29 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
awardList.setAwardName("波司登羽绒服"); awardList.setAwardName("波司登羽绒服");
awardList.setAwardType(1); awardList.setAwardType(1);
ajaxResult.setRetmsg("恭喜中一等奖,羽绒服"); ajaxResult.setRetmsg("恭喜中一等奖,羽绒服");
redisService.remove("award-" + awardNumber);
} }
} else { } else {
awardList.setAwardName("波司登优惠券"); awardList.setAwardName("波司登优惠券");
awardList.setAwardType(2); awardList.setAwardType(2);
ajaxResult.setRetmsg("恭喜中二等奖,优惠券"); ajaxResult.setRetmsg("恭喜中二等奖,优惠券");
} }
awardListMapper.insert(awardList);
try{
awardListMapper.insert(awardList);
}catch (Exception e){
ajaxResult.setRetmsg("恭喜中二等奖,优惠券");
}
redisService.set("user-award-" + users.getId(), awardList.toString());
ajaxResult.setData(awardList); ajaxResult.setData(awardList);
} }
}
ajaxResult.setRetcode(AjaxResult.SUCCESS); // }
return ajaxResult;
} }
ajaxResult.setRetcode(AjaxResult.SUCCESS);
return ajaxResult;
} }
/** /**
@ -315,4 +344,9 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
return ajaxResult; return ajaxResult;
} }
public static void main(String[] args) {
System.out.println(1 / 5);
}
} }

@ -217,19 +217,19 @@ public class WeixinService extends WxOpenServiceImpl {
public JSONObject autoLogin(String openId) { public JSONObject autoLogin(String openId) {
String userInfo = ""; // String userInfo = "";
if (redisService.exists(openId)) { // if (redisService.exists(openId)) {
//
userInfo = redisService.get(openId).toString(); // userInfo = redisService.get(openId).toString();
JSONObject jsonObject = JSONObject.parseObject(userInfo); // JSONObject jsonObject = JSONObject.parseObject(userInfo);
Integer subscribe = jsonObject.getInteger("subscribe"); // Integer subscribe = jsonObject.getInteger("subscribe");
insertRecord(openId, subscribe); // insertRecord(openId, subscribe);
return jsonObject; // return jsonObject;
} // }
String accessToken = fetchAccessToken(); String accessToken = fetchAccessToken();
userInfo = HttpRequestUtils.sendGet("https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN"); String userInfo = HttpRequestUtils.sendGet("https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN");
redisService.set(openId, userInfo.toString()); // redisService.set(openId, userInfo.toString());
JSONObject jsonObject = JSONObject.parseObject(userInfo); JSONObject jsonObject = JSONObject.parseObject(userInfo);
Integer subscribe = jsonObject.getInteger("subscribe"); Integer subscribe = jsonObject.getInteger("subscribe");
insertRecord(openId, subscribe); insertRecord(openId, subscribe);
@ -251,7 +251,8 @@ public class WeixinService extends WxOpenServiceImpl {
String pubkey = "1234567890123456"; String pubkey = "1234567890123456";
String iv = "WJi7HTZQoh8eHjup"; String iv = "WJi7HTZQoh8eHjup";
String accessToken = AESWithJCEUtils.aesDecode(aesAccessToken, pubkey, iv); String accessToken = AESWithJCEUtils.aesDecode(aesAccessToken, pubkey, iv);
redisService.set("access_token", access_token, expiresIn - 1000); logger.info("-----access token" + accessToken + "expire" + expiresIn);
redisService.set("access_token", accessToken, expiresIn - 1000);
return accessToken; return accessToken;
} }

@ -17,6 +17,10 @@ spring:
username: bsdloveh5 username: bsdloveh5
password: L0ve#h5_Bsd202008+ password: L0ve#h5_Bsd202008+
driver-class-name: com.mysql.jdbc.Driver driver-class-name: com.mysql.jdbc.Driver
hikari:
minimum-idle: 20
maximum-pool-size: 50
connection-timeout: 30000
#解决整合后报的一个错:<aused by: java.sql.SQLFeatureNotSupportedException: 这个 org.postgresql.jdbc.PgConnection.createClob() 方法尚未被实作。> #解决整合后报的一个错:<aused by: java.sql.SQLFeatureNotSupportedException: 这个 org.postgresql.jdbc.PgConnection.createClob() 方法尚未被实作。>
jpa: jpa:
properties: properties:
@ -42,8 +46,8 @@ server:
port: 8082 port: 8082
award: award:
rule: 5 rule: 30
amount: 10 amount: 100
wechat: wechat:
aesKey: r4cbRuIfbbnTIgJoQE33vJACJuoioZ5pRAhumITsP8O aesKey: r4cbRuIfbbnTIgJoQE33vJACJuoioZ5pRAhumITsP8O

@ -17,6 +17,10 @@ spring:
username: bsdloveh5 username: bsdloveh5
password: L0ve#h5_Bsd202008+ password: L0ve#h5_Bsd202008+
driver-class-name: com.mysql.jdbc.Driver driver-class-name: com.mysql.jdbc.Driver
hikari:
minimum-idle: 20
maximum-pool-size: 50
connection-timeout: 30000
#解决整合后报的一个错:<aused by: java.sql.SQLFeatureNotSupportedException: 这个 org.postgresql.jdbc.PgConnection.createClob() 方法尚未被实作。> #解决整合后报的一个错:<aused by: java.sql.SQLFeatureNotSupportedException: 这个 org.postgresql.jdbc.PgConnection.createClob() 方法尚未被实作。>
jpa: jpa:
properties: properties:
@ -42,8 +46,8 @@ server:
port: 8082 port: 8082
award: award:
rule: 5 rule: 10
amount: 10 amount: 100
wechat: wechat:
aesKey: r4cbRuIfbbnTIgJoQE33vJACJuoioZ5pRAhumITsP8O aesKey: r4cbRuIfbbnTIgJoQE33vJACJuoioZ5pRAhumITsP8O

Loading…
Cancel
Save