Browse Source

新增 活动前台小程序接口
修改 活动后台添加小程序二维码

huZhiHao 6 năm trước cách đây
mục cha
commit
c3e3e5f6dd

+ 309 - 0
src/main/java/platform/modules/api/web/ActivityOpenController.java

@@ -0,0 +1,309 @@
+package platform.modules.api.web;
+
+import com.alibaba.fastjson.JSON;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+import platform.common.Constant;
+import platform.common.annotation.OperationLog;
+import platform.common.base.controller.BaseController;
+import platform.common.util.ShiroUtils;
+import platform.common.util.WxAppUtil;
+import platform.modules.build.entity.Company;
+import platform.modules.build.service.CompanyService;
+import platform.modules.government.dto.ParamRegistration;
+import platform.modules.government.entity.Attachment;
+import platform.modules.government.entity.FileDown;
+import platform.modules.government.entity.User;
+import platform.modules.government.service.AttachmentService;
+import platform.modules.government.service.UserService;
+import platform.modules.sys.entity.ActivityDetail;
+import platform.modules.sys.entity.ActivityFavourite;
+import platform.modules.sys.entity.ActivityRegistration;
+import platform.modules.sys.service.ActivityFavouriteService;
+import platform.modules.sys.service.ActivityRegistrationService;
+import platform.modules.sys.service.ActivityService;
+import platform.modules.sys.service.WaitToDoService;
+import platform.modules.sys.web.ResponseMessage;
+
+import java.util.*;
+
+/**
+ * @Author :huZhiHao
+ * @Date :Created in 2019/12/16 15:23
+ * @Description: TODO
+ * @Modified By:
+ * @Version: v0.0.1
+ */
+@RestController
+@RequestMapping(value = "/activity")
+public class ActivityOpenController extends BaseController {
+
+    @Autowired
+    private ActivityService activityService;
+
+    @Autowired
+    private ActivityRegistrationService activityRegistrationService;
+
+    @Autowired
+    private AttachmentService attachmentService;
+
+    @Autowired
+    private ActivityFavouriteService activityFavouriteService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private CompanyService companyService;
+
+    @Autowired
+    private WaitToDoService waitToDoService;
+
+    /**
+     * @Author: huZhiHao
+     * @Description: 获取详情
+     * @Date: 2019/12/17
+     * @Params: [activity_id]
+     * @Return: platform.modules.sys.web.ResponseMessage
+     **/
+    @GetMapping(value = "/detail/{activity_id}")
+    public ResponseMessage getActivityDetail(@PathVariable("activity_id") int id) throws Exception {
+
+        ActivityDetail activityDetail = activityService.findOne(id + "");
+        activityService.increment(id + "");
+        List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
+        int num = 0;
+        String quota = activityDetail.getActivity_quota();
+        if (StringUtils.isBlank(quota)) quota = "0";
+        for (ActivityRegistration activityRegistration : registrationList) {
+            if (Objects.equals(activityRegistration.getReview_state(), "1")) {
+                num++;
+            }
+        }
+        int remain = Integer.parseInt(quota) - num;
+        if (remain < 0) {
+            remain = 0;
+        }
+        activityDetail.setActivity_remain(remain + "");
+        List<Attachment> attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.ACTIVITY, activityDetail.getId(), null);
+        if (null != attachments && attachments.size() > 0) {
+            FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), attachments.get(0).getDownload_uri());
+            activityDetail.setFileDown(fileDown);
+        }
+        return ResponseMessage.success("查询成功!", activityDetail);
+    }
+
+    /**
+     * @Author: huZhiHao
+     * @Description: 是否已报名
+     * @Date: 2019/12/17
+     * @Params: [activity_id]
+     * @Return: platform.modules.sys.web.ResponseMessage
+     **/
+    @GetMapping(value = "/is_regist")
+    public ResponseMessage getActivityDetail(@RequestParam("activity_id") String id, @RequestParam("phone") String phone) {
+
+        List<ActivityRegistration> activityRegistrationList = activityRegistrationService.getCurrRegUsers(id, phone);
+        if (CollectionUtils.isEmpty(activityRegistrationList))
+            return ResponseMessage.success("查询成功!", false);
+        return ResponseMessage.success("查询成功!", true);
+    }
+
+    /**
+     * @Author: huZhiHao
+     * @Description: 活动报名
+     * @Date: 2019/12/17
+     * @Params: [paramRegistration]
+     * @Return: platform.modules.sys.web.ResponseMessage
+     **/
+    @OperationLog(value = "报名活动")
+    @PostMapping(value = "/joinActivity")
+    public ResponseMessage joinActivity(@RequestBody ParamRegistration paramRegistration) {
+
+        log.info("活动报名");
+
+        Integer id = paramRegistration.getRegistrationList().get(0).getActivity_id();
+        ActivityDetail activityDetail = activityService.findById(id);
+        String quota = activityDetail.getActivity_quota();
+        String isReview = activityDetail.getIs_review();
+        int registrationNumber = 0;
+        if (!Objects.equals(quota, null) && !Objects.equals(quota, "")) {
+            //名额有限
+            if (Objects.equals(isReview, "1")) {
+                //需要审核
+                //已报名人数
+                registrationNumber = activityRegistrationService.getActivityRegistrationNumber(id);
+                if (registrationNumber >= Integer.parseInt(quota)) {
+                    return ResponseMessage.success("名额不足,仅剩" + (Integer.parseInt(quota) - registrationNumber) + "个名额,请修改人数!", false);
+                }
+            }
+        }
+
+        List<ActivityRegistration> registrationList = paramRegistration.getRegistrationList();
+        if (!org.apache.commons.collections.CollectionUtils.isEmpty(registrationList)) {
+            for (ActivityRegistration registration : registrationList) {
+                if (registration.getId() == null) {
+                    activityRegistrationService.saveActivityRegistration(registration);
+                }
+            }
+            List<User> pusers = userService.findUsersByPermission("G_ACTIVITY_MANAGE");
+            waitToDoService.completeAllTODO(activityDetail.getId(), Constant.DictionaryType.ACTIVITY_APPLICATION);
+            for (User puser : pusers) {
+                waitToDoService.newTODO(activityDetail.getActivity_title() + "审核", "/government/activity/review/" + activityDetail.getId(), Constant.WaitToDo_OperType.AUDIT, activityDetail.getId(),
+                        Constant.DictionaryType.ACTIVITY_APPLICATION, null, puser.getId().toString(), Constant.WaitToDo_IsSerial.IS_SERIAL, false);
+
+            }
+        }
+        if (!Objects.equals(quota, null) && !Objects.equals(quota, "")) {
+            //名额有限
+            if (Objects.equals(isReview, "1")) {
+                //需要审核
+                //已报名人数
+                registrationNumber = activityRegistrationService.getActivityRegistrationNumber(id);
+                return ResponseMessage.success("报名成功,剩余" + (Integer.parseInt(quota) - registrationNumber) + "个名额!", true);
+            }
+        }
+        return ResponseMessage.success("报名成功!", true);
+    }
+
+    @OperationLog(value = "取消报名")
+    @DeleteMapping(value = "/cancel_regist")
+    public ResponseMessage cancelRegist(@RequestParam("activity_id") String id, @RequestParam("phone") String phone) {
+
+        List<ActivityRegistration> activityRegistrationList = activityRegistrationService.getCurrRegUsers(id, phone);
+        if (!CollectionUtils.isEmpty(activityRegistrationList)) {
+            List<String> ids = new ArrayList<>();
+            for (ActivityRegistration activityRegistration : activityRegistrationList) {
+                ids.add(activityRegistration.getId() + "");
+            }
+            activityRegistrationService.adortRegister(ids);
+        }
+        return ResponseMessage.success("操作成功!");
+    }
+
+    /**
+     * @Author: huZhiHao
+     * @Description: 获取已报名
+     * @Date: 2019/12/17
+     * @Params: [id]
+     * @Return: platform.modules.sys.web.ResponseMessage
+     **/
+    @GetMapping(value = "/regist_user/list")
+    public ResponseMessage getCurrRegUsers(@RequestParam("activity_id") String id, @RequestParam("phone") String phone) {
+
+        List<ActivityRegistration> activityRegistrationList = activityRegistrationService.getCurrRegUsers(id, phone);
+        return ResponseMessage.success("查询成功!", activityRegistrationList);
+    }
+
+    /**
+     * @Author: huZhiHao
+     * @Description: 查询是否收藏
+     * @Date: 2019/12/17
+     * @Params: [id]
+     * @Return: platform.modules.sys.web.ResponseMessage
+     **/
+    @GetMapping(value = "/is_favourite/{activity_id}")
+    public ResponseMessage isFavourite(@PathVariable("activity_id") int id) throws Exception {
+
+        log.info("查询是否收藏!activity_id = {}", id);
+        if (!ShiroUtils.isLogin()) return ResponseMessage.success("请先登录!", 2);
+        ActivityFavourite activityFavourite = activityFavouriteService.selectByActivityIdAndUserId(id + "", ShiroUtils.getUserId() + "");
+        if (Objects.equals(activityFavourite, null)) return ResponseMessage.success("查询成功!", 1);
+        return ResponseMessage.success("查询成功!", 0);
+    }
+
+    /**
+     * @Author: huZhiHao
+     * @Description: 添加收藏
+     * @Date: 2019/12/17
+     * @Params: [id]
+     * @Return: platform.modules.sys.web.ResponseMessage
+     **/
+    @OperationLog(value = "收藏活动")
+    @PostMapping(value = "/add_favourite")
+    public ResponseMessage addFavourite(@RequestBody ActivityFavourite activityFavourite) throws Exception {
+
+        if (!ShiroUtils.isLogin()) return ResponseMessage.success("请先登录!", 2);
+
+        int count = activityFavouriteService.saveActivityFavourite(activityFavourite);
+        if (count > 0) return ResponseMessage.success("收藏成功!");
+        return ResponseMessage.success("收藏失败!");
+    }
+
+    /**
+     * @Author: huZhiHao
+     * @Description: 取消收藏
+     * @Date: 2019/12/17
+     * @Params: [id]
+     * @Return: platform.modules.sys.web.ResponseMessage
+     **/
+    @OperationLog(value = "取消收藏活动")
+    @DeleteMapping(value = "/remove_favourite/{activity_id}")
+    public ResponseMessage removeFavourite(@PathVariable("id") int id) throws Exception {
+
+        boolean b = activityFavouriteService.deleteByActivityIdAndUserId(id + "", ShiroUtils.getUserId() + "");
+        if (b) return ResponseMessage.success("取消收藏成功!");
+        return ResponseMessage.success("取消收藏失败!");
+    }
+
+    //更新登记表
+    @OperationLog(value = "更新登记表")
+    @PutMapping(value = "/registration")
+    public ResponseMessage updateRegistration(@RequestBody ActivityRegistration activityRegistration) {
+
+        Integer ret = activityRegistrationService.updateSelective(activityRegistration);
+        if (ret > 0) return ResponseMessage.success("更新成功!");
+        return ResponseMessage.success("更新失败!");
+    }
+
+    //根据手机号获取报名信息
+    @OperationLog(value = "根据手机号获取报名信息")
+    @GetMapping(value = "/registration")
+    public ResponseMessage getByPhone(@RequestParam("activity_id") Integer id, @RequestParam("phone") String phone) {
+
+        ActivityRegistration activityRegistration = new ActivityRegistration();
+        activityRegistration.setActivity_id(id);
+        activityRegistration.setPhone(phone);
+        List<ActivityRegistration> ret = activityRegistrationService.findListByWhere(activityRegistration);
+        Iterator<ActivityRegistration> it = ret.iterator();
+        while (it.hasNext()) {
+            if (Objects.equals(it.next().getReview_state(), "3"))
+                it.remove();
+        }
+        if (CollectionUtils.isEmpty(ret)) return ResponseMessage.success("查询成功!");
+        return ResponseMessage.success("查询成功!", ret.get(0));
+    }
+
+    //签到
+    @OperationLog(value = "签到")
+    @PutMapping(value = "/sign")
+    public ResponseMessage getByPhone(@RequestBody ActivityRegistration activityRegistration) {
+
+        activityRegistration.setSign_state("0");
+        activityRegistrationService.updateState(activityRegistration);
+        return ResponseMessage.success("签到成功!");
+    }
+
+    //根据手机号获取用户信息和企业信息
+    @OperationLog(value = "根据手机号获取用户信息和企业信息")
+    @GetMapping(value = "/user_info")
+    public ResponseMessage getuserInfoByPhone(@RequestParam("phone") String phone) {
+
+        Map<String, String> map = new HashMap<>();
+        User user = userService.findByMobile(phone);
+        if (user != null) {
+            Company company = companyService.findById(user.getCompany_id());
+            map.put("user_name", user.getUser_name());
+            map.put("phone", user.getPhone());
+            map.put("email", user.getEmail());
+
+            map.put("company_name", company.getCompany_name());
+            map.put("industry_name", company.getIndustry_name());
+        }
+
+        return ResponseMessage.success("查询成功!", map);
+    }
+}

+ 102 - 2
src/main/java/platform/modules/government/web/ActivityController.java

@@ -1,9 +1,11 @@
 package platform.modules.government.web;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.aliyuncs.exceptions.ClientException;
 import com.github.pagehelper.PageInfo;
 import org.apache.catalina.Executor;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.AutoConfigureOrder;
@@ -21,6 +23,7 @@ import platform.common.base.service.DictionaryItemService;
 import platform.common.util.AlibabaSMSUtil;
 import platform.common.util.ExportExcel;
 import platform.common.util.ShiroUtils;
+import platform.common.util.WxAppUtil;
 import platform.modules.build.DTO.CompanyDto;
 import platform.modules.build.entity.BuildInfo;
 import platform.modules.build.entity.Company;
@@ -43,6 +46,9 @@ import platform.modules.sys.service.*;
 import platform.modules.sys.web.ResponseMessage;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
@@ -947,9 +953,9 @@ public class ActivityController extends BaseController {
                 //发送短信
                 Map<String, String> params = new HashMap<>();
                 params.put("activity_title", activity.getActivity_title());
-                if (StringUtils.isNotBlank(reg.getPhone())){
+                if (StringUtils.isNotBlank(reg.getPhone())) {
                     String finalTemplateCode = templateCode;
-                    System.out.println("当前线程数:" + ((ThreadPoolExecutor)executor).getActiveCount());
+                    System.out.println("当前线程数:" + ((ThreadPoolExecutor) executor).getActiveCount());
                     Runnable runnable = () -> {
                         try {
                             AlibabaSMSUtil.sendSMS(
@@ -976,5 +982,99 @@ public class ActivityController extends BaseController {
         return BASE_GOVERNMENT_PATH + "activity_reject";
     }
 
+    /**
+     * 跳转到活动二维码
+     *
+     * @return
+     */
+    @GetMapping(value = "/qrcode/{id}")
+    public String qrcode(@PathVariable("id") String id, ModelMap modelMap) {
+
+        log.info("跳转到活动二维码!");
+
+        try {
+            InputStream is_detail = activityService.getQRcode("1", "350", "activity_id=" + id);
+            byte[] bytes_detail = IOUtils.toByteArray(is_detail);
+            String encoded_detail = Base64.getEncoder().encodeToString(bytes_detail);
+
+            InputStream is_sign = activityService.getQRcode("2", "350", "activity_id=" + id);
+            byte[] bytes_sign = IOUtils.toByteArray(is_sign);
+            String encoded_sign = Base64.getEncoder().encodeToString(bytes_sign);
+
+            modelMap.addAttribute("qrcode_detail", "data:image/jpg;base64," + encoded_detail);
+            modelMap.addAttribute("qrcode_sign", "data:image/jpg;base64," + encoded_sign);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        modelMap.addAttribute("activity_id", id);
+        return BASE_GOVERNMENT_PATH + "activity_qrcode";
+    }
+
+    /**
+     * @Author: huZhiHao
+     * @Description: 获取小程序二维码
+     * @Date: 2019/12/18
+     * @Params: [activity_id, type 1报名 2签到]
+     * @Return: void
+     **/
+    @GetMapping(value = "/download/qrcode/{activity_id}/{type}")
+    public void getDetailQRcode(@PathVariable("activity_id") String id, @PathVariable("type") String type, HttpServletResponse response) throws IOException {
+
+//        try {
+//            URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token);
+//            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
+//            // conn.setConnectTimeout(10000);//连接超时 单位毫秒
+//            // conn.setReadTimeout(2000);//读取超时 单位毫秒
+//            // 发送POST请求必须设置如下两行
+//            httpURLConnection.setDoOutput(true); // 打开写入属性
+//            httpURLConnection.setDoInput(true); // 打开读取属性
+//            httpURLConnection.setRequestMethod("POST");// 提交方式
+//            // 不得不说一下这个提交方式转换!!真的坑。。改了好长时间!!一定要记得加响应头
+//            httpURLConnection.setRequestProperty("Content-Type", "application/x-javascript; charset=UTF-8");// 设置响应头
+//            // 获取URLConnection对象对应的输出流
+//            PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());
+//            // 发送请求参数
+//            JSONObject paramJson = new JSONObject();
+//            paramJson.put("scene", "xxx"); // 你要放的内容
+//            paramJson.put("path", "pages/index/index");
+//            paramJson.put("width", 430); // 宽度
+//            //paramJson.put("auto_color", true);
+//            printWriter.write(paramJson.toString());
+//            // flush输出流的缓冲
+//            printWriter.flush();
+//            BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
+//            //创建一个空文件
+//            OutputStream os = new FileOutputStream(new File("E:/upload/test.jpg"));
+//            //ByteArrayOutputStream os = new ByteArrayOutputStream();
+//            int len;
+//            byte[] arr = new byte[1024];
+//            while ((len = bis.read(arr)) != -1) {
+//                os.write(arr, 0, len);
+//                os.flush();
+//            }
+//            os.close();
+//            // 上传云储存
+//            //InputStream is = new ByteArrayInputStream(os.toByteArray());
+//            //retMap = UploadUtils.upload(is);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+        InputStream is = null;
+        String name = "";
+        if ("1".equals(type)) {
+            name = "报名二维码.jpg";
+            is = activityService.getQRcode(type, "430", "activity_id=" + id);
+        } else if ("2".equals(type)) {
+            name = "签到二维码.jpg";
+            is = activityService.getQRcode(type, "430", "activity_id=" + id);
+        }
+        name = new String(name.getBytes(), "ISO-8859-1");
+        response.setHeader("Content-type", "application/octet-stream");
+        response.setHeader("Content-disposition", "attachment;fileName=\"" + name + "\"");
+        OutputStream os = response.getOutputStream();         //输出数据
+        IOUtils.copy(is, os);
+        is.close();
+        os.close();
+    }
 }
 

+ 1 - 1
src/main/java/platform/modules/government/web/ProjectController.java

@@ -36,7 +36,7 @@ import platform.modules.sys.web.ResponseMessage;
 public class ProjectController extends BaseController{
 	
 	@Autowired
-	private ProjectService projectService;
+	private ProjectService projectService; 
 	
 	@Autowired
 	private ProjectMaterialService projectMaterialService;

+ 20 - 8
src/main/java/platform/modules/home/service/HomeRefactorService.java

@@ -3,6 +3,7 @@ package platform.modules.home.service;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import io.swagger.models.auth.In;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,9 +24,12 @@ import platform.modules.sys.entity.ActivityReview;
 import platform.modules.sys.service.*;
 import platform.modules.sys.web.ResponseMessage;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Base64;
 import java.util.List;
 
 /**
@@ -136,10 +140,10 @@ public class HomeRefactorService {
      * @return
      */
     public ResponseMessage findProjectDetail(Integer id, Integer isFilling) {
-        if (isFilling == 0){
+        if (isFilling == 0) {
             //项目申报
             ProjectDeclaration project = projectDeclarationService.selectById(String.valueOf(id));
-            if (project != null){
+            if (project != null) {
                 String sourceName = dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.PROJECT_SOURCE, project.getProject_source());
                 project.setProject_source_name(sourceName);
                 project.setProject_content(StringEscapeUtils.unescapeHtml4(project.getProject_content()));
@@ -160,7 +164,7 @@ public class HomeRefactorService {
                 projectDeclarationService.updateSelective(project);
             }
             return ResponseMessage.success("success", project);
-        } else if (isFilling == 1){
+        } else if (isFilling == 1) {
             ProjectProvincesDeclaration provinces = projectProvincesDeclarationService.selectById(String.valueOf(id));
             if (null != provinces) {
                 String sourceName = dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.PROJECT_SOURCE, provinces.getProject_source());
@@ -224,27 +228,35 @@ public class HomeRefactorService {
             // 综合星级
             activity.setAvg_star(activityFeedbackService.findAvgStar(id));
             //是否收藏
-            if (isFavourited(id, user_id)){
+            if (isFavourited(id, user_id)) {
                 activity.setIs_favourited("1");
-            }
-            else {
+            } else {
                 activity.setIs_favourited("0");
             }
             //浏览数+1
             activity.setReading_number(activity.getReading_number() + 1);
             activityService.updateSelective(activity);
         }
+        InputStream is_detail = activityService.getQRcode("1", "350", "activity_id=" + id);
+        try {
+            byte[] bytes_detail = IOUtils.toByteArray(is_detail);
+            String encoded_detail = Base64.getEncoder().encodeToString(bytes_detail);
+            activity.setQr_code("data:image/jpg;base64," + encoded_detail);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
         return activity;
     }
 
     /**
      * 活动是否收藏
+     *
      * @param id
      * @return
      */
-    public boolean isFavourited(Integer id, Integer user_id){
+    public boolean isFavourited(Integer id, Integer user_id) {
         ActivityFavourite activityFavourite = activityFavouriteService.selectByActivityIdAndUserId(id + "", user_id + "");
-        if (activityFavourite != null){
+        if (activityFavourite != null) {
             return true;
         }
         return false;

+ 5 - 1
src/main/java/platform/modules/sys/entity/ActivityDetail.java

@@ -56,6 +56,9 @@ public class ActivityDetail extends BaseEntity {
     @Transient
     private int registration_number;
 
+    @Transient
+    private int registration_pass_number;
+
     @Transient
     private int registration_success_number;
 
@@ -147,5 +150,6 @@ public class ActivityDetail extends BaseEntity {
     private String activity_type_status;
     @Transient
     List<Integer> regUsers;
-
+    @Transient
+    private String qr_code;
 }

+ 6 - 0
src/main/java/platform/modules/sys/entity/ActivityRegistration.java

@@ -18,6 +18,12 @@ public class ActivityRegistration extends BaseEntity {
 
     private String user_type;
 
+    private String company_name;
+
+    private String industry_name;
+
+    private Integer gender;
+
     private String name;
 
     private String phone;

+ 59 - 37
src/main/java/platform/modules/sys/service/ActivityRegistrationService.java

@@ -80,10 +80,9 @@ public class ActivityRegistrationService extends BaseService<ActivityRegistratio
         //已报名人数
         int registrationNumber = getActivityRegistrationNumber(activityRegistration.getActivity_id());
         User currUser = new User();
-        if (activityRegistration.getUser_id() != null && !activityRegistration.getUser_id().equals("")){
+        if (activityRegistration.getUser_id() != null && !activityRegistration.getUser_id().equals("")) {
             currUser = userService.findById(activityRegistration.getUser_id());
-        }
-        else {
+        } else {
             currUser = ShiroUtils.getUserEntity();
         }
         activityRegistration.setUser_id(currUser.getId());
@@ -91,12 +90,12 @@ public class ActivityRegistrationService extends BaseService<ActivityRegistratio
         if (Objects.equals(Constant.UserType.GOVERNMENT, currUser.getUser_type())) {
             activityRegistration.setRelation_id("0");
         } else if (Objects.equals(Constant.UserType.BUILD, currUser.getUser_type())) {
-            activityRegistration.setRelation_id(currUser.getBuild_id()+ "");
+            activityRegistration.setRelation_id(currUser.getBuild_id() + "");
         } else if (Objects.equals(Constant.UserType.STREET, currUser.getUser_type())) {
             activityRegistration.setRelation_id(currUser.getStreet_id() + "");
         } else if (Objects.equals(Constant.UserType.COMPANY, currUser.getUser_type())) {
             activityRegistration.setRelation_id(currUser.getCompany_id() + "");
-        }else if (Objects.equals(Constant.UserType.PERSONAL, currUser.getUser_type())) {
+        } else if (Objects.equals(Constant.UserType.PERSONAL, currUser.getUser_type())) {
             activityRegistration.setRelation_id(currUser.getId() + "");
         } else {
             activityRegistration.setUser_type("6");// 没有账号
@@ -270,12 +269,36 @@ public class ActivityRegistrationService extends BaseService<ActivityRegistratio
             relationId = ShiroUtils.getStreetId().toString();
         } else if (Objects.equals(Constant.UserType.COMPANY, userType)) {
             relationId = ShiroUtils.getCompanyId().toString();
-        }else if (Objects.equals(Constant.UserType.PERSONAL, userType)) {
+        } else if (Objects.equals(Constant.UserType.PERSONAL, userType)) {
             relationId = ShiroUtils.getUserId().toString();
         }
         return activityRegistrationDao.findByRelationIdAndType(userType.toString(), relationId, activity_id);
     }
 
+    /**
+     * 获取当前账户所在单位已报名的
+     *
+     * @return
+     */
+    public List<ActivityRegistration> getCurrRegUsers(String activity_id, String phone) {
+
+        User user = userService.findByMobile(phone);
+        Integer userType = user.getUser_type();
+        String relationId = "";
+        if (Objects.equals(Constant.UserType.GOVERNMENT, userType)) {
+            relationId = "0";
+        } else if (Objects.equals(Constant.UserType.BUILD, userType)) {
+            relationId = user.getBuild_id().toString();
+        } else if (Objects.equals(Constant.UserType.STREET, userType)) {
+            relationId = user.getStreet_id().toString();
+        } else if (Objects.equals(Constant.UserType.COMPANY, userType)) {
+            relationId = user.getCompany_id().toString();
+        } else if (Objects.equals(Constant.UserType.PERSONAL, userType)) {
+            relationId = user.getId().toString();
+        }
+        return activityRegistrationDao.findByRelationIdAndType(userType.toString(), relationId, activity_id);
+    }
+
     /**
      * 获取当前账户所在单位已报名的
      *
@@ -295,7 +318,7 @@ public class ActivityRegistrationService extends BaseService<ActivityRegistratio
             relationId = user.getStreet_id().toString();
         } else if (Objects.equals(Constant.UserType.COMPANY, userType)) {
             relationId = user.getCompany_id().toString();
-        }else if (Objects.equals(Constant.UserType.PERSONAL, userType)) {
+        } else if (Objects.equals(Constant.UserType.PERSONAL, userType)) {
             relationId = user.getId().toString();
         }
         return activityRegistrationDao.findByRelationIdAndType(userType.toString(), relationId, activity_id);
@@ -303,41 +326,41 @@ public class ActivityRegistrationService extends BaseService<ActivityRegistratio
 
     public Boolean sendActivityAbortSMS(ActivityDetail activity, List<ActivityRegistration> registrations) {
         //您报名的活动:${activity_title} 已取消。具体信息请登录PC端查看。感谢您的支持。
-    	try {
-    		if (null != registrations && registrations.size() > 0) {
+        try {
+            if (null != registrations && registrations.size() > 0) {
                 for (ActivityRegistration registration : registrations) {
                     String phone = registration.getPhone();
-                    if(StringUtils.isNotBlank(phone)) {
+                    if (StringUtils.isNotBlank(phone)) {
                         String activity_title = activity.getActivity_title();
                         String templateParam = "{\"activity_title\":\"" + activity_title + "\"}";
                         AlibabaSMSUtil.sendSMS(phone, Constant.SMS_TemplateCode.ACTIVITY_ABORT, "企业提升发展服务平台", templateParam);
                     }
                 }
             }
-    		return true;
-    	}catch(Exception e) {
-    		e.printStackTrace();
-    		return false;
-    	}
-        
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+
     }
 
-    public Boolean sendActivityUpdateSMS(ActivityDetail activity, List<ActivityRegistration> registrations){
+    public Boolean sendActivityUpdateSMS(ActivityDetail activity, List<ActivityRegistration> registrations) {
         //您报名的活动:${activity_title} 活动内容有变更。具体信息请登录PC端查看。感谢您的支持。
-    	try {
-	        if (null != registrations && registrations.size() > 0) {
-	            for (ActivityRegistration registration : registrations) {
-	                String phone = registration.getPhone();
-	                String activity_title = activity.getActivity_title();
-	                String templateParam = "{\"activity_title\":\"" + activity_title + "\"}";
-	                AlibabaSMSUtil.sendSMS(phone, Constant.SMS_TemplateCode.ACTIVITY_UPDATE, "企业提升发展服务平台", templateParam);
-	            }
-	        }
-	        return true;
-        }catch(Exception e) {
-    		e.printStackTrace();
-    		return false;
-    	}
+        try {
+            if (null != registrations && registrations.size() > 0) {
+                for (ActivityRegistration registration : registrations) {
+                    String phone = registration.getPhone();
+                    String activity_title = activity.getActivity_title();
+                    String templateParam = "{\"activity_title\":\"" + activity_title + "\"}";
+                    AlibabaSMSUtil.sendSMS(phone, Constant.SMS_TemplateCode.ACTIVITY_UPDATE, "企业提升发展服务平台", templateParam);
+                }
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
     }
 
     /**
@@ -357,7 +380,7 @@ public class ActivityRegistrationService extends BaseService<ActivityRegistratio
      * @return
      */
     public List<ActivityRegistration> getActivityRegistration(Integer activityId, int userId) {
-        return  activityRegistrationDao.getActivityRegistration(activityId, userId);
+        return activityRegistrationDao.getActivityRegistration(activityId, userId);
     }
 
     /**
@@ -383,9 +406,9 @@ public class ActivityRegistrationService extends BaseService<ActivityRegistratio
      * @param type
      * @return
      */
-    public List<ActivityDetail> findTypesActivitys(String type, Integer userId){
+    public List<ActivityDetail> findTypesActivitys(String type, Integer userId) {
         List<ActivityDetail> statistics = new ArrayList<>();
-        switch (type){
+        switch (type) {
             case "pending"://待参加
                 statistics = activityRegistrationDao.findPendingActivity(userId);
                 break;
@@ -413,10 +436,9 @@ public class ActivityRegistrationService extends BaseService<ActivityRegistratio
                 activity.setFileDown(fileDown);
             }
             //是否收藏
-            if (homeRefactorService.isFavourited(activity.getId(), userId)){
+            if (homeRefactorService.isFavourited(activity.getId(), userId)) {
                 activity.setIs_favourited("1");
-            }
-            else {
+            } else {
                 activity.setIs_favourited("0");
             }
             //活动回顾

+ 49 - 20
src/main/java/platform/modules/sys/service/ActivityService.java

@@ -1,5 +1,6 @@
 package platform.modules.sys.service;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.aliyuncs.exceptions.ClientException;
 import com.github.pagehelper.PageHelper;
@@ -14,10 +15,7 @@ import platform.common.Constant;
 import platform.common.base.model.DictionaryItem;
 import platform.common.base.service.BaseService;
 import platform.common.base.service.DictionaryItemService;
-import platform.common.util.AlibabaSMSUtil;
-import platform.common.util.DateUtil;
-import platform.common.util.ShiroUtils;
-import platform.common.util.WebUtil;
+import platform.common.util.*;
 import platform.modules.build.entity.BuildInfo;
 import platform.modules.government.dao.AttachmentDao;
 import platform.modules.government.dto.*;
@@ -36,6 +34,8 @@ import platform.modules.sys.entity.ActivityPush;
 import platform.modules.sys.entity.ActivityRegistration;
 import tk.mybatis.mapper.entity.Example;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -479,18 +479,18 @@ public class ActivityService extends BaseService<ActivityDetail> {
         List<ActivityDetail> dates = activityDetailDao.getEventList(start1, start2, null, ShiroUtils.getUserId());
         return dates;
     }
-    
+
     public Integer getAllActivityCount() {
         int count = activityDetailDao.getAllActivityCount();
         return count;
     }
-    
+
     public Integer getJoinedActivityCount() {
-    	SearchCondition condition = new SearchCondition();
-    	if(ShiroUtils.getUserType().equals(Constant.UserType.STREET)) {
-			condition.setUser_type(Constant.UserType.STREET);
-			condition.setStreet_id(ShiroUtils.getStreetId());
-		}
+        SearchCondition condition = new SearchCondition();
+        if (ShiroUtils.getUserType().equals(Constant.UserType.STREET)) {
+            condition.setUser_type(Constant.UserType.STREET);
+            condition.setStreet_id(ShiroUtils.getStreetId());
+        }
         int count = activityDetailDao.getJoinedActivityCount(condition);
         return count;
     }
@@ -516,19 +516,17 @@ public class ActivityService extends BaseService<ActivityDetail> {
                     FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), request.getFile_url());
                     ad.setFileDown(fileDown);
                 }
-                if (ad.getActivity_deadline() != null){
+                if (ad.getActivity_deadline() != null) {
                     LocalDateTime deadline = LocalDateTime.parse(ad.getActivity_deadline(), formatter);
-                    if (!deadline.isBefore(LocalDateTime.now())){
+                    if (!deadline.isBefore(LocalDateTime.now())) {
                         ad.setCan_sign_up(true);
                     }
-                }
-                else {
+                } else {
                     ad.setCan_sign_up(true);
                 }
-                if (homeRefactorService.isFavourited(ad.getId(), request.getUser_id())){
+                if (homeRefactorService.isFavourited(ad.getId(), request.getUser_id())) {
                     ad.setIs_favourited("1");
-                }
-                else {
+                } else {
                     ad.setIs_favourited("0");
                 }
             }
@@ -538,6 +536,7 @@ public class ActivityService extends BaseService<ActivityDetail> {
 
     /**
      * 获取已结束的活动列表
+     *
      * @param condition
      * @return
      */
@@ -582,7 +581,7 @@ public class ActivityService extends BaseService<ActivityDetail> {
 //        ActivityDetail detail = this.findById(id);
         ActivityDetail detail = activityDetailDao.findByActivityId(id);
 
-        PageHelper.startPage(pageNum,5);
+        PageHelper.startPage(pageNum, 5);
         List<ActivityRegistration> registrations =
                 activityRegistrationService.getActivityRegistration(id, ShiroUtils.getUserId());
         ActivityOrderDetail orderDetail = new ActivityOrderDetail();
@@ -607,9 +606,9 @@ public class ActivityService extends BaseService<ActivityDetail> {
     /**
      * 强烈推荐
      *
-     * @return
      * @param pageNum
      * @param pageSize
+     * @return
      */
     public PageInfo<ActivityDetail> findHighlyRecommended(Integer pageNum, Integer pageSize) {
         PageHelper.startPage(pageNum, pageSize);
@@ -624,5 +623,35 @@ public class ActivityService extends BaseService<ActivityDetail> {
         }
         return new PageInfo<>(highlyRecommendedList);
     }
+
+    /**
+     * @Author: huZhiHao
+     * @Description: 获取二维码 1 详情 2 签到
+     * @Date: 2019/12/19
+     * @Params: [accessToken, type, width, scene]
+     * @Return: java.io.InputStream
+     **/
+    public InputStream getQRcode(String type, String width, String scene) {
+
+        String access_token = JSON.parseObject(WxAppUtil.getAccessToken(APP_ID, APP_SERCRET)).getString("access_token");
+        String path = "";
+        InputStream is = null;
+        try {
+            if (Objects.equals("1", type)) {
+                path = ACTIVITY_PAGE_PATH_DETAIL;
+            } else if (Objects.equals("2", type)) {
+                path = ACTIVITY_PAGE_PATH_SIGN;
+            }
+            is = WxAppUtil.getUnlimitedQRCode(access_token, path, width, scene);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return is;
+    }
+
+    private static String APP_ID = "wx3007d6086b29908c";
+    private static String APP_SERCRET = "68245dbd037f7516bcbe0eeafc1e01a9";
+    private static String ACTIVITY_PAGE_PATH_DETAIL = "/pages/index/index";
+    private static String ACTIVITY_PAGE_PATH_SIGN = "/pages/index/index";
 }
 

+ 2 - 2
src/main/resources/application.yml

@@ -15,12 +15,12 @@ spring:
   #激活哪一个环境的配置文件
   profiles:
 
-#    active: dev
+    active: dev
 #    active: test
 #    active: aliyun
 #    active: vpn
 #    active: prod_in
-    active: prod_out
+#    active: prod_out
 #    active: prod_test
 
   #数据源

+ 3 - 3
src/main/resources/mapper/company/StockLandDao.xml

@@ -110,7 +110,7 @@
 					id in
 					(
 						select temp.maxId from (select APPLY_ID,max(id) maxId
-						from Z_APPROVAL
+						from z_approval
 						<if test="approvalCondition.type != null and approvalCondition.type != '' ">
 							where type = #{approvalCondition.type}
 						</if>
@@ -129,7 +129,7 @@
 				id in
 				(
 				select temp.maxId from (select APPLY_ID,max(id) maxId
-						from Z_APPROVAL
+						from z_approval
 						<if test="approvalCondition.type != null and approvalCondition.type != '' ">
 							where type = #{approvalCondition.type}
 						</if>
@@ -305,7 +305,7 @@
 					approval.create_time in
 					(
 						select temp.maxTime from (select APPLY_ID,max(CREATE_TIME) maxTime
-						from Z_APPROVAL
+						from z_approval
 						
 						GROUP BY APPLY_ID
 						) temp	)

+ 3 - 3
src/main/resources/mapper/government/IndustrialLandDao.xml

@@ -34,14 +34,14 @@
     <!--待审核-->
     <if test="condition.pageType != null and condition.pageType == 'audit'">
         and a.id in (
-            SELECT DISTINCT APPLY_ID FROM Z_APPROVAL WHERE (NEXTCHECKER = #{condition.userId}
+            SELECT DISTINCT APPLY_ID FROM z_approval WHERE (NEXTCHECKER = #{condition.userId}
             or NEXTCHECKER LIKE CONCAT(#{condition.userId}, ',%')
             or NEXTCHECKER LIKE CONCAT(CONCAT('%,',#{condition.userId}), ',%'))
             and (
                 id in
                     (
                     select temp.maxId from (select APPLY_ID,max(id) maxId
-                    from Z_APPROVAL
+                    from z_approval
                     <if test="condition.type != null and condition.type != '' ">
                         where type = #{condition.type}
                     </if>
@@ -55,7 +55,7 @@
     <!--已审核-->
     <if test="condition.pageType != null and condition.pageType == 'done'">
         and a.id in (
-        SELECT DISTINCT APPLY_ID FROM Z_APPROVAL WHERE
+        SELECT DISTINCT APPLY_ID FROM z_approval WHERE
         (
         (
         CHECKER = #{condition.userId}

+ 10 - 0
src/main/resources/mapper/sys/ActivityDetailDao.xml

@@ -15,6 +15,7 @@
         detail.is_review,
         detail.reading_number,
         detail.activity_publishtime,
+        detail.activity_starttime,
         detail.activity_state,
         (
 
@@ -51,6 +52,15 @@
         SELECT
         count(id)
         FROM
+        ac_activity_registration
+        WHERE
+        activity_id = detail.id
+        and review_state = 1
+        ) registration_pass_number,
+        (
+        SELECT
+        count(id)
+        FROM
         ac_activity_feedback
         WHERE
         activity_id = detail.id

+ 2 - 1
src/main/resources/mapper/sys/ActivityRegistrationDao.xml

@@ -265,7 +265,8 @@
         FROM
             ac_activity_registration reg
         WHERE
-            reg.user_type = #{type}
+            reg.del_flag = 0
+        and reg.user_type = #{type}
         and reg.relation_id =#{rel}
         and reg.activity_id =#{activity_id}
         ORDER BY

+ 18 - 12
src/main/resources/static/js/government/activity/activity_list.js

@@ -6,37 +6,43 @@
  w		弹出层宽度(缺省调默认值)
  h		弹出层高度(缺省调默认值)
  */
+
 /*新增活动*/
-function activity_add(title,url,w,h){
-    var index = layer_show(title,pagePath+url,w,h);
+function activity_add(title, url, w, h) {
+    var index = layer_show(title, pagePath + url, w, h);
     layer.full(index);
 }
 
 /*编辑*/
-function editActivity(title,url,w,h) {
-    var index = layer_show(title,pagePath+url,w,h);
+function editActivity(title, url, w, h) {
+    var index = layer_show(title, pagePath + url, w, h);
     layer.full(index);
 }
 
 /*详情*/
-function activityDetail(title,url,w,h) {
-    var index = layer_show(title,pagePath+url,w,h);
+function activityDetail(title, url, w, h) {
+    var index = layer_show(title, pagePath + url, w, h);
     layer.full(index);
 }
 
 /*审核*/
-function activityReview(title,url,w,h) {
-    var index = layer_show(title,pagePath+url,w,h);
+function activityReview(title, url, w, h) {
+    var index = layer_show(title, pagePath + url, w, h);
     layer.full(index);
 }
 
 /*签到*/
-function activitySign(title,url,w,h) {
-    var index = layer_show(title,pagePath+url,w,h);
+function activitySign(title, url, w, h) {
+    var index = layer_show(title, pagePath + url, w, h);
     layer.full(index);
 }
 
 /*活动取消*/
-function activityReject(title,url,w,h) {
-    var index = layer_show(title,pagePath+url,w,h);
+function activityReject(title, url, w, h) {
+    var index = layer_show(title, pagePath + url, w, h);
+}
+
+/*活动二维码*/
+function activityQRcode(title, url, w, h) {
+    var index = layer_show(title, pagePath + url, w, h);
 }

+ 1 - 1
src/main/resources/templates/admin/government/activity_add.html

@@ -198,8 +198,8 @@
         <div class="row cl">
             <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-2">
                 <a onclick="saveAsDraft()" class="btn btn-primary radius">保存草稿</a>
-                <a onclick="preview()" class="btn btn-secondary radius">预览</a>
                 <a onclick="publish()" class="btn btn-primary radius">发布</a>
+                <a onclick="preview()" class="btn btn-secondary radius">预览</a>
                 <a onclick="removeIframe();" class="btn btn-default radius" type="button">返回</a>
             </div>
         </div>

+ 10 - 4
src/main/resources/templates/admin/government/activity_list.html

@@ -98,21 +98,24 @@
             <thead>
             <tr class="text-c">
                 <th width="25"><input type="checkbox"></th>
+                <th>类型</th>
                 <th>标题</th>
                 <th>活动状态</th>
-                <th>活动类型</th>
                 <th>报名审核</th>
-                <th>报名人数</th>
                 <th>阅读数</th>
+                <th>报名人数</th>
+                <th>审核人数</th>
                 <th>签到数</th>
                 <th>反馈数</th>
                 <th width="120">发布时间</th>
+                <th width="120">活动时间</th>
                 <th width="180">操作</th>
             </tr>
             </thead>
             <tbody>
             <tr class="text-c" th:each="m,iterStat:${pageInfo.list}">
                 <td><input type="checkbox"></td>
+                <td th:text="${m.activity_type}" th:title="${m.activity_type}"></td>
                 <td class="text-overflow" th:text="${m.activity_title}" th:title="${m.activity_title}"></td>
                 <!--<td th:text="${m.activity_state}"></td>-->
                 <td th:if="${m.state_code=='0'}">未发布</td>
@@ -121,15 +124,16 @@
                 <td th:if="${m.state_code=='4'}">活动结束</td>
                 <td th:if="${m.state_code=='2'}">活动取消</td>
                 <!--<td th:text="${m.is_review}"></td>-->
-                <td th:text="${m.activity_type}" th:title="${m.activity_type}"></td>
                 <td th:if="${m.is_review=='0'}">是</td>
                 <td th:if="${m.is_review=='1'}">否</td>
-                <td th:text="${m.registration_number}"></td>
                 <td th:text="${m.reading_number}"></td>
+                <td th:text="${m.registration_number}"></td>
+                <td th:text="${m.registration_pass_number}"></td>
                 <td th:text="${m.sgin_number}"></td>
                 <td th:text="${m.feedback_number}"></td>
                 <!--<td th:text="${#dates.format(m.activity_publishtime,'yyyy-MM-dd HH:mm')}"></td>-->
                 <td th:text="${#strings.substring(m.activity_publishtime,0,16)}"></td>
+                <td th:text="${#strings.substring(m.activity_starttime,0,16)}"></td>
                 <td class="td-manage">
                     <a class="ml-5"
                        th:onclick="'javascript:activityDetail(\'查看活动详情\',\'/government/activity/get/'+${m.id}+'\');'">详情</a>
@@ -145,6 +149,8 @@
                     <!--进行中和结束的可以签到-->
                     <a th:if="${m.state_code=='3'||m.state_code=='4'}" class="ml-5"
                        th:onclick="'javascript:activitySign(\'活动签到\',\'/government/activity/sign/'+${m.id}+'\');'">签到确认</a>
+                    <a th:if="${m.state_code=='1'||m.state_code=='3'}" class="ml-5"
+                       th:onclick="'javascript:activityQRcode(\'活动二维码\',\'/government/activity/qrcode/'+${m.id}+'\',\'800\',\'500\');'">二维码</a>
                 </td>
             </tr>
             </tbody>