...
 
Commits (45)
    https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/d67cbb8ecd037b9601866d53a33d9cdb04ee6a3b userDao 2022-04-23T12:51:41+08:00 LKJKJOIUIU 834629193@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/defb5ca4ed6e2a3e52440fe2a98a31746cfcf7e1 UserService 2022-04-23T13:17:41+08:00 LKJKJOIUIU 834629193@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/5e019639184a53a8992fd5edf637ada836d4f734 Merge branch 'backend_zyx' into 'backend' 2022-04-23T13:21:36+08:00 LKJKJOIUIU 834629193@qq.com Backend zyx See merge request <a href="/SoftwareEngineering2022ClassW/followers/teampractice4/-/merge_requests/2" data-original="SoftwareEngineering2022ClassW/followers/teampractice4!2" data-link="false" data-link-reference="false" data-project="121547" data-merge-request="50409" data-project-path="SoftwareEngineering2022ClassW/followers/teampractice4" data-iid="2" data-mr-title="Backend zyx" data-reference-type="merge_request" data-container="body" data-placement="top" title="" class="gfm gfm-merge_request">!2</a> https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/272b0d9ea7306b11bd50f0e1914e2cbdec326cff 修改 2022-04-23T13:25:26+08:00 legend 792051764@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/0d38dd05eb17ea572336ccc2b894fb95eca0b0d4 Merge branch 'dev_wlj' into 'backend' 2022-04-23T13:25:26+08:00 221900223吴良杰 792051764@qq.com 修改 See merge request <a href="/SoftwareEngineering2022ClassW/followers/teampractice4/-/merge_requests/3" data-original="SoftwareEngineering2022ClassW/followers/teampractice4!3" data-link="false" data-link-reference="false" data-project="121547" data-merge-request="50410" data-project-path="SoftwareEngineering2022ClassW/followers/teampractice4" data-iid="3" data-mr-title="修改" data-reference-type="merge_request" data-container="body" data-placement="top" title="" class="gfm gfm-merge_request">!3</a> https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/96aea8f68007004e7c930a8913be19acfe3ff6b1 Merge branch 'backend_hck' into 'backend' 2022-04-23T13:25:41+08:00 Veltuss 1551206259@qq.com Backend hck See merge request <a href="/SoftwareEngineering2022ClassW/followers/teampractice4/-/merge_requests/4" data-original="SoftwareEngineering2022ClassW/followers/teampractice4!4" data-link="false" data-link-reference="false" data-project="121547" data-merge-request="50411" data-project-path="SoftwareEngineering2022ClassW/followers/teampractice4" data-iid="4" data-mr-title="Backend hck" data-reference-type="merge_request" data-container="body" data-placement="top" title="" class="gfm gfm-merge_request">!4</a> https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/eb7a2191dd3666652b1f1758fc498b1a172abfb8 activitymapper 2022-04-23T13:42:10+08:00 legend 792051764@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/133519673fc72f977d7f580f96ffec389fc1cdfb Merge branch 'dev_wlj' into 'backend' 2022-04-23T13:40:41+08:00 221900223吴良杰 792051764@qq.com activitymapper See merge request <a href="/SoftwareEngineering2022ClassW/followers/teampractice4/-/merge_requests/5" data-original="SoftwareEngineering2022ClassW/followers/teampractice4!5" data-link="false" data-link-reference="false" data-project="121547" data-merge-request="50412" data-project-path="SoftwareEngineering2022ClassW/followers/teampractice4" data-iid="5" data-mr-title="activitymapper" data-reference-type="merge_request" data-container="body" data-placement="top" title="" class="gfm gfm-merge_request">!5</a> https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/5edf7e30c58459fd7759ab071b6674090c3c878e 参与者dao 2022-04-23T14:39:03+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/606e71c06ff184d5131b889604a70b1bd1a144ed userService 2022-04-23T14:46:05+08:00 veltuss 1551206259@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/587798006937ae98cb9b0cbf03d4b96a6f702f77 抽奖信息 2022-04-23T14:50:02+08:00 legend 792051764@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/b7a66639b2cf93458edca34cea22c5a44866e220 Merge branch 'dev_wlj' into 'backend' 2022-04-23T14:48:51+08:00 221900223吴良杰 792051764@qq.com 抽奖信息 See merge request <a href="/SoftwareEngineering2022ClassW/followers/teampractice4/-/merge_requests/6" data-original="SoftwareEngineering2022ClassW/followers/teampractice4!6" data-link="false" data-link-reference="false" data-project="121547" data-merge-request="50413" data-project-path="SoftwareEngineering2022ClassW/followers/teampractice4" data-iid="6" data-mr-title="抽奖信息" data-reference-type="merge_request" data-container="body" data-placement="top" title="" class="gfm gfm-merge_request">!6</a> https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/0f1f56cd122f32b6693553e64fe779a9ddec8224 抽奖参与者service,controller初步 2022-04-23T15:00:02+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/801bed948f9c3d63fc3c2d13ab5df7dd6beee664 Merge remote-tracking branch 'origin/backend' into backend 2022-04-23T15:00:18+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/817608017cb38ff3bc63a75e243af943bf23a629 修复bug 2022-04-23T15:35:06+08:00 veltuss 1551206259@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/2e51e8908610ed16fd2529c4af16f71a899784d6 bug修复 2022-04-23T15:38:20+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/153150d6b1487ee3010c07fa251b2198fcc13f0c 修正信息 2022-04-23T15:43:44+08:00 legend 792051764@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/784dc98ea3b48a88f1c5f0426c8f736e360234b5 Merge branch 'dev_wlj' into 'backend' 2022-04-23T15:49:22+08:00 221900223吴良杰 792051764@qq.com 修正信息 See merge request <a href="/SoftwareEngineering2022ClassW/followers/teampractice4/-/merge_requests/7" data-original="SoftwareEngineering2022ClassW/followers/teampractice4!7" data-link="false" data-link-reference="false" data-project="121547" data-merge-request="50415" data-project-path="SoftwareEngineering2022ClassW/followers/teampractice4" data-iid="7" data-mr-title="修正信息" data-reference-type="merge_request" data-container="body" data-placement="top" title="" class="gfm gfm-merge_request">!7</a> https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/8cddc3c03a1f049775c1dd1673068d0b859b1b5a 修复UserController中的错误 2022-04-23T15:54:13+08:00 veltuss 1551206259@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/2dc375946b86d35fa43e7abf3ca932d92f91f480 ActivityController 2022-04-23T16:15:06+08:00 legend 792051764@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/a39196dd75ae61994af99fc9073296cea5da7a46 admin 2022-04-23T16:48:50+08:00 LKJKJOIUIU 834629193@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/50adc1c24a692166e7aacea3e0b6ad7b49a36be2 Merge remote-tracking branch 'origin/backend' into backend 2022-04-23T16:49:12+08:00 LKJKJOIUIU 834629193@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/d8da5669035960d20ac7687a5ba71d5de1d1788c 定时器 2022-04-23T17:05:55+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/e2d200f3a4b17cdf75fe6b4d3b91be4c75f7ba52 Merge remote-tracking branch 'origin/backend' into backend 2022-04-23T17:06:06+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/f052fa4edb4c5a771d50eccb05249a7561e85b66 抽奖活动接收方式修改 2022-04-23T17:38:28+08:00 legend 792051764@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/57853c2ae70c2804c632eec68eb6700f9049e022 user功能模块 2022-04-23T18:02:26+08:00 veltuss 1551206259@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/fddea6c9191bb4e6423824afb1fb87177929eb23 admin 2022-04-23T18:52:31+08:00 LKJKJOIUIU 834629193@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/b50536e8dea6db3203674b9397927f7f9c29c1c7 跨域处理 2022-04-23T19:34:38+08:00 veltuss 1551206259@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/fdf75f2941e4a3a2f182b5e32482fb16b029a1b4 修改抽奖活动 2022-04-23T19:47:58+08:00 LKJKJOIUIU 834629193@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/446a6be42b77d102ea9c287ad2a1278490ef44b6 定时工具类,可传参任务 2022-04-23T19:57:24+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/6f43d849cd03ce91e780d86fc401516007165e14 Merge remote-tracking branch 'origin/backend' into backend 2022-04-23T19:57:46+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/c8182684e95ea8c5e60f52712e60858835f7d3ab 定时工具类,可传参任务 2022-04-23T19:59:34+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/ad683dea59011a1f5a062c8ac414d9121fdacb55 Participants sql语句新增与修改 2022-04-23T20:36:48+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/089467219e017c9fe3d21d5674fc63e8622c02ff 删除定时任务 2022-04-23T21:09:51+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/5fc648424f40399aae559c1517e2233dec2925e7 开奖方式初步 2022-04-23T21:13:44+08:00 legend 792051764@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/48127a04e450fd3ca6080f7acf04be8ad8e5e70c 修改抽奖活动 2022-04-23T21:25:03+08:00 LKJKJOIUIU 834629193@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/162fc94879a38992e09cb10cbb1023872eba4661 void 2022-04-23T21:27:52+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/2baf98c5875c973bd8fb62fdf5bc07f001d0ee4c Merge remote-tracking branch 'origin/backend' into backend 2022-04-23T21:27:59+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/bf255e697199583473a5ef8ae8a2f7f098e45d00 修改抽奖活动 2022-04-23T21:52:08+08:00 LKJKJOIUIU 834629193@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/26a8b2dc0bee44009f5f77eed7e8ad29e242d644 开奖 2022-04-23T21:58:29+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/c389be912206e20341890dc05a339c3be71a68b3 Merge remote-tracking branch 'origin/backend' into backend 2022-04-23T21:59:32+08:00 lyc 1142207420@qq.com # Conflicts: # backend/src/main/java/com/nav/controller/ActivityController.java https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/e80e89c8e59a2a3a941129fa4d8ba28b6fd5f337 跨域 2022-04-23T22:04:14+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/12f5442fff3ed9b53da0e66fe25ce2e5352623ee 参与抽奖 2022-04-23T22:27:30+08:00 lyc 1142207420@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/aab46c1b02861e86d95f0b1c8ef97776e37ee446 修改pom 2022-04-23T22:50:22+08:00 LKJKJOIUIU 834629193@qq.com https://gitcode.net/SoftwareEngineering2022ClassW/followers/teampractice4/-/commit/964580dda4b8456e46e1170f44a32af152a7d93f Merge branch 'backend' into 'master' 2022-04-23T23:29:56+08:00 IIIllI 1142207420@qq.com Backend See merge request <a href="/SoftwareEngineering2022ClassW/followers/teampractice4/-/merge_requests/10" data-original="SoftwareEngineering2022ClassW/followers/teampractice4!10" data-link="false" data-link-reference="false" data-project="121547" data-merge-request="50437" data-project-path="SoftwareEngineering2022ClassW/followers/teampractice4" data-iid="10" data-mr-title="Backend" data-reference-type="merge_request" data-container="body" data-placement="top" title="" class="gfm gfm-merge_request">!10</a>
......@@ -21,7 +21,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.57</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
......@@ -32,11 +36,6 @@
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
......@@ -45,6 +44,10 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
</dependencies>
<build>
......
package com.nav.controller;
import com.alibaba.fastjson.JSONObject;
import com.mchange.v1.util.Sublist;
import com.nav.pojo.Activity;
import com.nav.pojo.Award;
import com.nav.pojo.Participant;
import com.nav.pojo.User;
import com.nav.service.ActivityService;
import com.nav.service.ParticipantService;
import com.nav.util.Quartz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpSession;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Random;
@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/activity")
public class ActivityController {
//@Autowired
//SchedulerFactoryBean schedulerFactoryBean;
@Autowired
ParticipantService participantService;
@Autowired
ActivityService activityService;
@RequestMapping("/allActivity")
public List<Activity> list() {
List<Activity> list = activityService.getActivityList();
return list;
}
@RequestMapping("/{id}")
public Activity getActivityById(@PathVariable long id) {
return activityService.getActivityById(id);
}
@RequestMapping("byUser/{id}")
public List<Activity> getActivityByUserId(@PathVariable long id) {
return activityService.getActivityByUserId(id);
}
//接收前端传递的json数据
@PostMapping("/addActivity")
public Object addActivity(@RequestBody Map<String,Object> activity) throws ParseException {
Activity activity1=new Activity();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
activity1.setFirst((String) activity.get("first"));
activity1.setSecond((String) activity.get("second"));
activity1.setThird((String) activity.get("third"));
activity1.setFirstCount((int) activity.get("firstCount"));
activity1.setSecondCount((int) activity.get("secondCount"));
activity1.setThirdCount((int) activity.get("thirdCount"));
activity1.setLimit((int) activity.get("limit"));
activity1.setStartTime( format.parse(((String) activity.get("startTime"))));
activity1.setEndTime(format.parse(((String) activity.get("endTime"))));
activity1.setState((int) activity.get("state"));
activity1.setUserId( ((Integer)activity.get("userId")).longValue());
activity1.setName((String) activity.get("name"));
activityService.addActivity(activity1);
return null;
}
@RequestMapping("/participateActivity")
public String participateActivity(@PathVariable("userId") Long userId,@PathVariable("userId") Long activityId) {
participantService.participateDraw(userId,activityId);
return "参与成功";
}
@RequestMapping("/updateActivity")
public Object updateActivity(@RequestBody JSONObject param) {
JSONObject activity_json = param.getJSONObject("activity");
Activity activity=(Activity) JSONObject.toJavaObject(activity_json,Activity.class);
activityService.updateActivity(activity);
return null;
}
@RequestMapping("/del/{userId}")
public Object deleteActivity(@PathVariable("userId") int id) {
activityService.deleteActivity(id);
return null;
}
//开奖
@RequestMapping("/luckdraw/{id}")
public List<Award> luckdraw(@PathVariable("id") Long id) {
Random random = new Random();
List<User> userList = participantService.selectParticipants(id);
Activity activity = activityService.getActivityById(id);
int first = activity.getFirstCount();
int second = activity.getSecondCount();
int third = activity.getThirdCount();
for (int i = 0; i < first && i < userList.size(); i++) {
participantService.setState(userList.get(i).getId(), id, 1);
}
for (int i = first; i < first+second && i < userList.size(); i++) {
participantService.setState(userList.get(i).getId(), id, 2);
}
for (int i = first+second; i < first+second+third && i < userList.size(); i++) {
participantService.setState(userList.get(i).getId(), id, 3);
}
return participantService.selectAwardList(id);
}
}
package com.nav.controller;
import com.nav.pojo.Activity;
import com.nav.service.ActivityService;
import com.nav.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
import java.util.List;
@Controller
@RequestMapping("/admin")
public class AdminController {
@Autowired
AdminService adminService;
//封号
@RequestMapping("/setState")
public void setUserState() {
adminService.setUserState();
}
}
package com.nav.controller;
import com.nav.service.ParticipantService;
import com.nav.util.Quartz;
import org.quartz.SchedulerException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
@RestController
public class ParticipantController {
@Autowired
private ParticipantService participantService;
@Autowired
private SchedulerFactoryBean bean;
@Autowired
private ParticipantService service;
@RequestMapping("/test")
public Map<String, Object> addParticipants() throws ParseException, SchedulerException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date test = format.parse("2022-04-23 21:09:30");
Quartz.autoDraw(bean, test, 1L);
Quartz.delJob(bean,1L);
// service.participateDraw(4L,1L);
// service.setState(1L,1L,3);
return null;
}
}
package com.nav.controller;
import com.nav.pojo.User;
import com.nav.service.UserService;
import com.nav.util.IpUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;
......@@ -15,18 +18,22 @@ public class UserController {
@Autowired
UserService userService;
@RequestMapping("/login")
@PostMapping("/login")
@ResponseBody
public Map<String,Object> login(@RequestBody Map<String,String> user){
@CrossOrigin("*")
public Map<String,Object> login(@RequestBody Map<String,String> user, HttpServletRequest req){
Map<String,Object> result=new HashMap<>();
String phone=user.get("phone");
String phone=user.get("username");
String password=user.get("password");
User userInfo=userService.selectUserByPhone(phone,password);
if(user!=null) {
if(userInfo!=null) {
HttpSession session = req.getSession();//先创建session
session.setAttribute("user", userInfo);
result.put("msg", "success");
result.put("name", user.getName());
result.put("phone", user.getPhone());
result.put("address", user.getAddress());
result.put("name", userInfo.getName());
result.put("phone", userInfo.getPhone());
result.put("address", userInfo.getAddress());
result.put("ip", IpUtil.getIpAddr(req));
}
else{
result.put("msg", "failed");
......@@ -34,18 +41,46 @@ public class UserController {
return result;
}
@RequestMapping("register")
@GetMapping("logout")
public Object logout(HttpSession session){
session.removeAttribute("user");
return null;
}
@PostMapping("register")
@ResponseBody
public Map<String,Object> register(@RequestBody Map<String,String> user){
@CrossOrigin("*")
public Map<String,Object> register(@RequestBody Map<String,String> user,HttpServletRequest request){
Map<String,Object> result=new HashMap<>();
String phone=user.get("phone");
String phone=user.get("username");
String password=user.get("password");
String name=user.get("name");
String address=user.get("address");
boolean record=userService.insertUser(phone,password,name,address);
String IP=IpUtil.getIpAddr(request);
boolean record=userService.addUser(phone,password,name,address,IP);
if(!record){
result.put("message","failed");
}
return result;
}
@PostMapping("info")
@ResponseBody
public Map<String,Object> getUserInfo(@RequestBody Map<String,Object> user){
Map<String,Object> result=new HashMap<>();
Long userId=(Long)user.get("id");
User userInfo=userService.selectUserInfo(userId);
result.put("name", userInfo.getName());
result.put("phone", userInfo.getPhone());
result.put("address", userInfo.getAddress());
return result;
}
@RequestMapping(value = "/getIp", method = RequestMethod.GET)
@ResponseBody
public String getIp(HttpServletRequest request) {
return IpUtil.getIpAddr(request);
}
}
package com.nav.dao;
import com.nav.pojo.Activity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface ActivityDao {
//查找全部抽奖活动信息
public List<Activity> getActivityList();
//查找指定活动Id的抽奖活动信息
public Activity getActivityById(long activityId);
//通过发布者id查找抽奖活动
public List<Activity> getActivityByUserId(long userId);
//添加抽奖活动
public void addActivity(Activity activity);
//修改抽奖活动
public void updateActivity(Activity activity);
//删除抽奖活动(通过用户id)
public void deleteActivity(int userId);
}
package com.nav.dao;
import com.nav.pojo.Admin;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface AdminDao {
public List<Admin> getAdminList();
}
package com.nav.dao;
import com.nav.pojo.Award;
import com.nav.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Mapper
@Repository
public interface ParticipantDao {
//获取参与抽奖人员 id:活动id
public List<User> getParticipants(Long id);
//获取中奖信息
public List<Award> getAward(Long id);
//参与抽象 userID activityID
public void addParticipants(Map<String, Object> params);
//获取所有参与抽奖的人员
public List<User> getAllParticipants();
//修改中奖状态 userID activityID state
public void setState(Map<String, Object> params);
}
......@@ -9,6 +9,21 @@ import java.util.List;
@Mapper
@Repository
public interface UserDao {
//根据手机号查找用户
public User selectUserByPhone(String phone);
//返回所有用户
public List<User> getUserList();
//添加新用户
public void insertUser(String phone,String password,String name,String address,String ip);
//修改用户状态
public void updateUserState();
//修改用户密码
public void updatePassword(String pssword);
//查询用户信息
public User selectUserById(Long id);
}
......@@ -22,4 +22,5 @@ public class Activity {
private Date endTime;
private int state;
private long userId;
private String name;
}
package com.nav.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Award {
private String name;
private int state;
}
package com.nav.service;
import com.nav.pojo.Activity;
import java.util.List;
public interface ActivityService {
//查找全部抽奖活动信息
public List<Activity> getActivityList();
//查找指定活动Id的抽奖活动信息
public Activity getActivityById(long activityId);
//通过发布者id查找抽奖活动
public List<Activity> getActivityByUserId(long userId);
//添加抽奖活动
public void addActivity(Activity activity);
//修改抽奖活动
public void updateActivity(Activity activity);
//删除抽奖活动(通过用户id)
public void deleteActivity(int userId);
}
package com.nav.service;
import com.nav.dao.ActivityDao;
import com.nav.pojo.Activity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ActivityServiceImpl implements ActivityService{
@Autowired
ActivityDao activityDao;
@Override
public List<Activity> getActivityList() {
return activityDao.getActivityList();
}
@Override
public Activity getActivityById(long activityId) {
return activityDao.getActivityById(activityId);
}
@Override
public List<Activity> getActivityByUserId(long userId) {
return activityDao.getActivityByUserId(userId);
}
@Override
public void addActivity(Activity activity) {
activityDao.addActivity(activity);
}
@Override
public void updateActivity(Activity activity) {
activityDao.updateActivity(activity);
}
@Override
public void deleteActivity(int userId) {
activityDao.deleteActivity(userId);
}
}
package com.nav.service;
import com.nav.pojo.Activity;
import com.nav.pojo.Participant;
import com.nav.pojo.User;
import java.util.List;
public interface AdminService {
//可以查看所有用户抽奖、中奖信息,还能看到后台统计信息如用户所属IP的账号数,并能够封禁账号。
public List<Participant> getParticipantList();
public void setUserState();
}
\ No newline at end of file
package com.nav.service;
import com.nav.dao.ActivityDao;
import com.nav.dao.UserDao;
import com.nav.pojo.Activity;
import com.nav.pojo.Participant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class AdminServiceImpl implements AdminService{
@Autowired
ActivityDao activityDao;
UserDao userDao;
@Override
public List<Participant> getParticipantList() {
return null;
}
@Override
public void setUserState() {
userDao.updateUserState();
}
}
package com.nav.service;
import com.nav.pojo.Award;
import com.nav.pojo.User;
import java.util.List;
public interface ParticipantService {
//查询活动参与者名单 活动id
public List<User> selectParticipants(Long id);
//查询中奖名单 活动id
public List<Award> selectAwardList(Long id);
//参与抽奖
public void participateDraw(Long userId,Long activityId);
//修改中奖信息
public void setState(Long userId, Long activityId ,int state);
}
package com.nav.service;
import com.nav.dao.ParticipantDao;
import com.nav.pojo.Award;
import com.nav.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class ParticipantServiceImp implements ParticipantService {
@Autowired
private ParticipantDao participantDao;
@Override
public List<User> selectParticipants(Long id) {
return participantDao.getParticipants(id);
}
@Override
public List<Award> selectAwardList(Long id) {
return participantDao.getAward(id);
}
@Override
public void participateDraw(Long userId, Long activityId) {
Map<String,Object> map=new HashMap<>();
map.put("userId",userId);
map.put("activityId",activityId);
participantDao.addParticipants(map);
}
public void setState(Long userId, Long activityId ,int state) {
Map<String,Object> map=new HashMap<>();
map.put("userId",userId);
map.put("activityId",activityId);
map.put("state",state);
participantDao.setState(map);
}
}
package com.nav.service;
import com.nav.pojo.User;
import java.util.List;
public interface UserService {
//根据手机号查找用户
public User selectUserByPhone(String phone,String password);
//返回所有用户
public List<User> getUserList();
//添加新用户
public boolean addUser(String phone,String password,String name,String address,String ip);
//修改密码
public void updatePassword(String password);
//根据id返回用户信息
public User selectUserInfo(Long id);
}
package com.nav.service;
import com.nav.dao.UserDao;
import com.nav.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService{
@Autowired
UserDao userDao;
//根据手机号查找用户
@Override
public User selectUserByPhone(String phone,String password){
User user=userDao.selectUserByPhone(phone);
if(user!=null&&user.getPassword().equals(password)){
return user;
}
else{
return null;
}
}
//返回所有用户
@Override
public List<User> getUserList(){
return userDao.getUserList();
}
@Override
public boolean addUser(String phone, String password, String name, String address,String ip) {
User user=userDao.selectUserByPhone(phone);
if(user!=null) {
return false;
}
else{
userDao.insertUser(phone,password,name,address,ip);
return true;
}
}
@Override
public void updatePassword(String password) {
userDao.updatePassword(password);
}
@Override
public User selectUserInfo(Long id) {
return userDao.selectUserById(id);
}
}
package com.nav.util;
import com.nav.dao.ActivityDao;
import com.nav.dao.ParticipantDao;
import com.nav.service.ActivityService;
import com.nav.service.ParticipantService;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.util.Date;
public class Draw extends QuartzJobBean {
@Autowired
private ActivityService activityService;
@Autowired
private ParticipantService participantService;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
JobKey jobKey = context.getJobDetail().getKey();
JobDataMap jobDataMap = context.getMergedJobDataMap();
System.out.println("id: "+jobDataMap.getLong("id")+"jobKey: "+jobKey);
}
}
package com.nav.util;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class IpUtil {
public static String getIpAddr(HttpServletRequest request) {
String ipAddress = null;
try {
ipAddress = request.getHeader("x-forwarded-for");
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if (ipAddress.equals("127.0.0.1")) {
// 根据网卡取本机配置的IP
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress = inet.getHostAddress();
}
}
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
// = 15
if (ipAddress.indexOf(",") > 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
} catch (Exception e) {
ipAddress="";
}
// ipAddress = this.getRequest().getRemoteAddr();
return ipAddress;
}
}
\ No newline at end of file
package com.nav.util;
import com.nav.util.Draw;
import org.quartz.*;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class Quartz {
//public static SchedulerFactoryBean schedulerFactoryBean;
public static void autoDraw(SchedulerFactoryBean schedulerFactoryBean, Date date, Long activityID) throws SchedulerException, ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date test = format.parse("2022-04-23 19:45:00");
Scheduler scheduler = schedulerFactoryBean.getScheduler();
JobDetail jobDetail = JobBuilder.newJob(Draw.class)
.withIdentity(String.valueOf(activityID))
.usingJobData("id", activityID)
.storeDurably()
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.forJob(jobDetail)//关联上述的JobDetail
.withIdentity(String.valueOf(activityID))//给Trigger起个名字
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withRepeatCount(0))// 重复次数 执行一次不重复
.startAt(date)
.build();
scheduler.scheduleJob(jobDetail, trigger);
}
public static void delJob(SchedulerFactoryBean schedulerFactoryBean, Long activityID) throws SchedulerException {
// TriggerKey 定义了trigger的名称和组别 ,通过任务名和任务组名获取TriggerKey
TriggerKey triggerKey = TriggerKey.triggerKey(String.valueOf(activityID));
Scheduler scheduler = schedulerFactoryBean.getScheduler();
// 停止触发器
scheduler.resumeTrigger(triggerKey);
//移除除触发器
scheduler.unscheduleJob(triggerKey);
// 移除任务
scheduler.deleteJob(JobKey.jobKey(String.valueOf(activityID)));
System.out.println("删除定时任务成功");
}
public static String createRandomStr(int length) {
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(62);
stringBuffer.append(str.charAt(number));
}
return stringBuffer.toString();
}
}
......@@ -4,10 +4,10 @@ server:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost/XXXX?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
url: jdbc:mysql://47.95.151.202/lotterysystem?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
username: root
password: 123456
#����mapper��ӳ���ļ���λ��
password: Nav_123456
mybatis:
mapper-locations: classpath:/mapper/*.xml
configuration:
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nav.dao.ActivityDao">
<select id="getActivityList" resultType="com.nav.pojo.Activity">
select * from activity;
</select>
<select id="getActivityById" resultType="com.nav.pojo.Activity">
select * from activity
where id = #{activityId}
</select>
<select id="getActivityByUserId" resultType="com.nav.pojo.Activity">
select * from activity
where user_id = #{userId}
</select>
<select id="addActivity" parameterType="com.nav.pojo.Activity" >
insert into activity (`first`,`second`,third,first_count,second_count,third_count,`limit`,start_time,end_time,state,user_id,`name`)
values (#{first},#{second},#{third},#{firstCount},#{secondCount},#{thirdCount},#{limit},#{startTime},#{endTime},#{state},#{userId},#{name});
</select>
<update id="updateActivity" parameterType="com.nav.pojo.Activity">
update activity
set `first`=#{first},`second`=#{second},third=#{third},first_count=#{firstCount},
second_count=#{secondCount},third_count=#{thirdCount},`limit`=#{limit},start_time=#{startTime},
end_time=#{endTime},`state`=#{state},`name`=#{name}
where user_id = #{userId}
</update>
<delete id="deleteActivity" parameterType="int">
delete from activity where user_id=#{userId}
</delete>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nav.dao.AdminDao">
<select id="getAdminList" resultType="com.nav.pojo.Admin">
select * from admin;
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nav.dao.ParticipantDao">
<select id="getParticipants" parameterType="long" resultType="com.nav.pojo.User">
select *
from user
where id in (select user_id from participant where activity_id = #{1});
</select>
<select id="getAward" parameterType="long" resultType="com.nav.pojo.Award">
select `user`.`name`, participant.state
from participant,
`user`
where participant.activity_id = #{id}
and participant.user_id = `user`.id
</select>
<select id="getAllParticipants" resultType="com.nav.pojo.User">
select *
from user
where id in (select user_id from participant);
</select>
<insert id="addParticipants" parameterType="map">
insert into participant (user_id, activity_id, `state`)
values (#{userId}, #{activityId}, 0)
</insert>
<update id="setState" parameterType="map" >
update participant
set `state`=#{state}
where user_id = #{userId} and activity_id=#{activityId}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nav.dao.UserDao">
<select id="selectUserByPhone" parameterType="String" resultType="com.nav.pojo.User">
select *
from lotterysystem.user where phone=#{phone};
</select>
<select id="getUserList" resultType="com.nav.pojo.User">
select *
from lotterysystem.user;
</select>
<insert id="insertUser" parameterType="String">
insert into lotterysystem.user(phone,password,name,address,state,IP)
VALUES (#{phone},#{password},#{name},#{address},1,#{ip});
</insert>
<update id="updateUserState">
update lotterysystem.user set state=0
where id=#{id}
</update>
<update id="updatePassword">
update lotterysystem.user set password=#{password}
where id=#{id}
</update>
<select id="selectUserById" resultType="com.nav.pojo.User">
select *
from lotterysystem.user where id=#{id};
</select>
</mapper>
\ No newline at end of file