master
zyy 5 years ago
parent 59489dc15e
commit 1c1d35401f

@ -1,5 +1,8 @@
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 org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@ -14,12 +17,16 @@ public class InitConfig {
private Integer amount;
@Resource
RedisService redisService;
@Resource
private AwardListMapper awardListMapper;
@PostConstruct
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);
}

@ -3,6 +3,7 @@ package com.bsd.say.controller;
import com.bsd.say.beans.AjaxRequest;
import com.bsd.say.beans.AjaxResult;
import com.bsd.say.entities.AwardList;
import com.bsd.say.exception.AreadyAwardException;
import com.bsd.say.service.AwardListService;
import org.springframework.web.bind.annotation.*;
@ -12,9 +13,10 @@ import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("award-list")
@CrossOrigin
public class AwardListController extends BaseController<AwardListService, AwardList>{
public class AwardListController extends BaseController<AwardListService, AwardList> {
@Resource
private AwardListService awardListService;
@Override
public AwardListService getBaseService() {
return super.getBaseService();
@ -40,7 +42,7 @@ public class AwardListController extends BaseController<AwardListService, AwardL
*/
@RequestMapping(value = "/is-valid-lottery")
@ResponseBody
public AjaxResult isValidLottery(@RequestBody AjaxRequest ajaxRequest){
public AjaxResult isValidLottery(@RequestBody AjaxRequest ajaxRequest) {
AjaxResult ajaxResult = new AjaxResult();
try {
ajaxResult = awardListService.isValidLottery(ajaxRequest);
@ -54,10 +56,16 @@ public class AwardListController extends BaseController<AwardListService, AwardL
}
@RequestMapping("award")
public AjaxResult award(@RequestBody AjaxRequest ajaxRequest){
public AjaxResult award(@RequestBody AjaxRequest ajaxRequest) {
AjaxResult ajaxResult = new AjaxResult();
try {
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) {
e.printStackTrace();
String errMsg = e.getMessage() != null ? e.getMessage() : "操作失败";
@ -72,7 +80,7 @@ public class AwardListController extends BaseController<AwardListService, AwardL
*/
@RequestMapping(value = "/save-award")
@ResponseBody
public AjaxResult saveAward(@RequestBody AjaxRequest ajaxRequest){
public AjaxResult saveAward(@RequestBody AjaxRequest ajaxRequest) {
AjaxResult ajaxResult = new AjaxResult();
ajaxResult = awardListService.saveAward(ajaxRequest);
return ajaxResult;
@ -83,7 +91,7 @@ public class AwardListController extends BaseController<AwardListService, AwardL
*/
@RequestMapping(value = "/get-award-list")
@ResponseBody
public AjaxResult getAwardList(@RequestBody AjaxRequest ajaxRequest){
public AjaxResult getAwardList(@RequestBody AjaxRequest ajaxRequest) {
AjaxResult ajaxResult = new AjaxResult();
try {
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.AjaxResult;
import com.bsd.say.entities.AwardList;
import com.bsd.say.exception.AreadyAwardException;
public interface AwardListService extends BaseService<AwardList>{
AjaxResult award(AjaxRequest ajaxRequest);
AjaxResult award(AjaxRequest ajaxRequest) throws AreadyAwardException;
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.Record;
import com.bsd.say.entities.Users;
import com.bsd.say.exception.AreadyAwardException;
import com.bsd.say.mapper.AwardListMapper;
import com.bsd.say.mapper.CouponMapper;
import com.bsd.say.mapper.RecordMapper;
import com.bsd.say.mapper.UsersMapper;
import com.bsd.say.service.AwardListService;
import com.bsd.say.service.RedisService;
import com.bsd.say.util.LogUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@ -29,6 +31,7 @@ import java.util.List;
@Service("awardListService")
@Transactional
public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, AwardList> implements AwardListService {
@Value("${award.rule}")
private Integer rule;
@Value("${award.amount}")
@ -40,6 +43,8 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
@Resource
private RedisTemplate redisTemplate;
@Resource
private RedisService redisService;
@Resource
private CouponMapper couponMapper;
@Resource
private RecordMapper recordMapper;
@ -60,28 +65,38 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
* @return
*/
@Override
public AjaxResult award(AjaxRequest ajaxRequest) {
public AjaxResult award(AjaxRequest ajaxRequest) throws AreadyAwardException {
synchronized (this) {
AjaxResult ajaxResult = new AjaxResult();
JSONObject data = ajaxRequest.getData();
if (data == null) {
AjaxResult ajaxResult = new AjaxResult();
JSONObject data = ajaxRequest.getData();
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.setRetmsg("DATA MISSING");
ajaxResult.setRetmsg("openId MISSING");
return ajaxResult;
} else {
String openId = data.getString("openId");
// String code = data.getString("code");
if (StringUtils.isEmpty(openId)) {
ajaxResult.setRetcode(AjaxResult.FAILED);
ajaxResult.setRetmsg("openId MISSING");
return ajaxResult;
} else {
JSONObject userInfo = weixinService.getUserInfoByOpenId(openId);
String unionId = userInfo.getString("unionid");
logger.info("union_id:" + unionId);
Users users = usersMapper.selectOne(Wrappers.<Users>lambdaQuery().eq(Users::getOpenId, openId)
.and(queryWrapper1 -> queryWrapper1.eq(Users::getState, 1)));
Users users = usersMapper.selectOne(Wrappers.<Users>lambdaQuery().eq(Users::getOpenId, openId)
.and(queryWrapper1 -> queryWrapper1.eq(Users::getState, 1)));
// if (redisService.exists("user-award-" + users.getId())) {
//
// AwardList userAWardList = userAWardList = awardListMapper.selectOne(Wrappers.<AwardList>lambdaQuery().eq(AwardList::getUserId, users.getId()));
// if (null != userAWardList) {
//
//
// redisService.set("user-award-" + users.getId(), userAWardList.toString());
// throw new AreadyAwardException("您已经抽过奖了, 不要太贪心哦~~~");
// }
// }
// synchronized (this) {
AwardList maxIdAward = awardListMapper.selectByMaxId();
Integer newAwardNumner = maxIdAward.getAwardNumber() + 1;
AwardList awardList = new AwardList();
@ -89,9 +104,13 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
awardList.setAwardNumber(newAwardNumner);
awardList.setCreateDateTime(new Date());
awardList.setUpdateDateTime(new Date());
int awardNumber = newAwardNumner / rule;
//中大奖
if (newAwardNumner % rule == 0) {
if (newAwardNumner > rule * amount) {
if (newAwardNumner > rule * amount && !redisService.exists("award-" + (awardNumber))) {
logger.info("没一等奖了");
awardList.setAwardName("波司登优惠券");
awardList.setAwardType(2);
@ -100,19 +119,29 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
awardList.setAwardName("波司登羽绒服");
awardList.setAwardType(1);
ajaxResult.setRetmsg("恭喜中一等奖,羽绒服");
redisService.remove("award-" + awardNumber);
}
} else {
awardList.setAwardName("波司登优惠券");
awardList.setAwardType(2);
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.setRetcode(AjaxResult.SUCCESS);
return ajaxResult;
// }
}
ajaxResult.setRetcode(AjaxResult.SUCCESS);
return ajaxResult;
}
/**
@ -315,4 +344,9 @@ public class AwardListServiceImpl extends BaseServiceImpl<AwardListMapper, Award
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) {
String userInfo = "";
if (redisService.exists(openId)) {
userInfo = redisService.get(openId).toString();
JSONObject jsonObject = JSONObject.parseObject(userInfo);
Integer subscribe = jsonObject.getInteger("subscribe");
insertRecord(openId, subscribe);
return jsonObject;
}
// String userInfo = "";
// if (redisService.exists(openId)) {
//
// userInfo = redisService.get(openId).toString();
// JSONObject jsonObject = JSONObject.parseObject(userInfo);
// Integer subscribe = jsonObject.getInteger("subscribe");
// insertRecord(openId, subscribe);
// return jsonObject;
// }
String accessToken = fetchAccessToken();
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());
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());
JSONObject jsonObject = JSONObject.parseObject(userInfo);
Integer subscribe = jsonObject.getInteger("subscribe");
insertRecord(openId, subscribe);
@ -251,7 +251,8 @@ public class WeixinService extends WxOpenServiceImpl {
String pubkey = "1234567890123456";
String iv = "WJi7HTZQoh8eHjup";
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;
}

@ -17,6 +17,10 @@ spring:
username: bsdloveh5
password: L0ve#h5_Bsd202008+
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() 方法尚未被实作。>
jpa:
properties:
@ -42,8 +46,8 @@ server:
port: 8082
award:
rule: 5
amount: 10
rule: 30
amount: 100
wechat:
aesKey: r4cbRuIfbbnTIgJoQE33vJACJuoioZ5pRAhumITsP8O

@ -17,6 +17,10 @@ spring:
username: bsdloveh5
password: L0ve#h5_Bsd202008+
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() 方法尚未被实作。>
jpa:
properties:
@ -42,8 +46,8 @@ server:
port: 8082
award:
rule: 5
amount: 10
rule: 10
amount: 100
wechat:
aesKey: r4cbRuIfbbnTIgJoQE33vJACJuoioZ5pRAhumITsP8O

Loading…
Cancel
Save